Still working on adding generalisations and making it easier to have multiple object types