distinct types design

distinct types design