Adding Model class
Merging changes with proposed architecture