Object oriented software design, MVC, creational patterns