Clean up mapObject API with learnings from #27: syncObject