set up basic model system making use of the Decorator and Factory patterns