refactored stores and sources on top of common base class