Use strongly typed enums in a few places
Restructure initialization