base type 2 on the the type 3 definitions
calling clpmn only when nonzero