designing with types