Data layer implementation