Added Data access layer with unit tests