added allow_private listener option so that listeners with protected/private methods can still listen