cleaner interface with different object types
  - pre big-changes with collision semantics