Make InternalRedirect a non private object
Change InternalRedirect to deal in Option instead of Option of Either
Fix ModelOrResult to work with new types