infix constructors considered harmful