work on persistence layer abstraction