Break out the functional types into their own package.