changed names of all type with -Type postfix to avoid conflicts with other types
@WIP, adding constraints, fixing bugs etc
@WIP made a start at solving constraints