added some tests and started implementing the model