adding off option to clean up listeners