Designing By Types