Adopt type safe enums and remove the integratePresentation phase