Work in progress, most abstract classes in place but not done. Still working on the naming convention (map vs object vs element)