add BaseStorage abstract class for easier implementation of new storage

I created a new Base class that is abstract and implement the interface. Than I changed the current 2 implementations to start using the new Abstract class