     program = make.columns name, [
       { _LABEL: 'program_name', name: name }
       make.buttons "action", contents, my.command, (button, args) ->
+        # TODO: add some kind of confirmation
         button.up.remove_child(button)
         button.send 'click'
         button.send 'brick', -1

      my.assert sprite[method], "#{sprite.label()}: no '#{method}' property"
      sprite[method](key, value)

    collision: (world, args) ->
      [proposing_sprite, collision_subject, coordinates] = args
      return unless proposing_sprite == sprite
      # if this is my sprite to handle
      if collision_subject.get('obstruction')
        world.call 'reset_index'
        load_program 'interrupt'
      else
        sprite.call 'commit', coordinates

    apply: (world, args) ->
      {target, action} = args
      return unless world.get 'editable'      

    return 0
    
  program_behavior = (name) -> {
    _EXPORTS: ['tick', 'apply']
    _AUTHORITY: {
      selected: (world) -> world.index == world.get('next_index')
    }
