Split models into separate files

This is an experimenting PR.. any kind of feedback is more than welcome.. not sure yet if this will be merged.. we'll see