modifying objects to classes
making synchronous, in favor of letting implementer wrap in future