Base Model

This is the start of base model, contains a lot of methods that perform
most of the basic logic.