Refactor of Data Access Layer, working with unit tests, no integration tests yet