Im confused why there is a distinction between Shape and Type.  Is there not way to abstract that distinction away?