An Introduction to Model Oriented Programming