As discussed offline we should probably:
1. Move Param and TypeParam to the top level. 
2. Move ParamType into Param as Param.Type.