much cleaner handling of foreign keys
exclude abstract classes