added subscribe / unsubscribe support