Bugfix: missing require
Clean Model a bit, implement Factions
Add type comments to Model