lint cleanup
changes to base listener / safety for multiple subscriptions
throw errors -> callbacks
working volume listener impl