add inheritance and more flexible associations