6 Implementing Type Constraints