Remove observer pattern, edited visibility

Removed the observer pattern, instead will replace with a mediator
pattern. Edited the visibility of some of the model classes so that a
controller class can access them (clearly this needs to happen). Will
probably need to update visibility on some methods but we handle that
when we need to