object types and event handling