print-object is now defined in base-object, descendants only need to define format-object