Abstract out the model