added abstraction of storage so we could switch it easily