Custom storage

do you really need `AbstractStorageFactory`? Maybe we can just implement the interface