first implementation of the model