added interfaces for the stores and a generic store class