Updated models to appropriate design pattern. Removed pluralisations of model names. Updated some model datatypes and internals to make more sense.