Function And Type Design