First level of abstraction created
Works for the most part; isConsistent still not done.