added a lot of models; made partial implementation of methods and interfaces;
see diagram to understand