added init and caching methods, added subscriptions, context, selector