added initialize() function to give more flexibility on listener and permissions setup timing