Reworked the entities so it's less a mess to create one and to remove code duplicat.