resolves #10, use Security::generateRandomKey() to generate activation_key instead of md5