Very big change, rewriting whole model class.