Lots of changes to make models more abstract (allow for somewhat arbitrary
attributes). Hella' broken atm.