added more models and done some refactoring