Not yet working, but refactoring the models