Started overhauling the entity implementations to allow us for better abstraction, note that there are a few tests available in the sandbox under my name.