Step one would bee sum types, so only valid value space can be represented (return value or error, but not both or neither).