handle inheritance better, only use a constructor when the value is
primative and the normative type isn't, don't clobber toJSON