[oop] model driven design