Refactoring whole model to make it simplier and clearer.