Added the data layer, keeping it simple with provider and model