anchor.diff:      , { os_pid, Device#device.os_pid }
       ].
   
  -handle_start( Msg, DeviceId, State ) ->
  -    case Msg of
  -        { ok, Info } ->
  -            UpdateDeviceFun = fun( D ) ->
  -                D#device{
  -                  state = running,
  -                  os_pid = proplists:get_value( os_pid, Info )
  -                }
  -            end,
  -            Devices = orddict:update(
  -                DeviceId,
  -                UpdateDeviceFun,
  -                State#state.devices
  -            ),
  -            State#state{ devices = Devices };
  -        { error, _Reason } ->
  -            % FIXME - log
  -            Devices = orddict:update(
  -                DeviceId,
  -                fun( D ) -> D#device{ state = crashed } end,
  -                State#state.devices
  -            ),
  -            State#state{ devices = Devices }
  -    end.
  +handle_start( { ok, Info }, DeviceId, State ) ->
  +    Device = orddict:fetch( DeviceId, State#state.devices ),
  +    gen_server:reply( Device#device.started_by, { ok, DeviceId } ),
  +
  +    UpdateDeviceFun = fun( D ) ->
  +        D#device{
  +          state = running,
  +          os_pid = proplists:get_value( os_pid, Info )
  +        }
  +    end,
  +    Devices = orddict:update(
  +        DeviceId,
  +        UpdateDeviceFun,
  +        State#state.devices
  +    ),
  +    State#state{ devices = Devices };
  +
  +handle_start( { error, _ } = Error, DeviceId, State ) ->
  +    % FIXME - log
  +    Device = orddict:fetch( DeviceId, State#state.devices ),
  +    gen_server:reply( Device#device.started_by, Error ),
  +    Devices = orddict:update(
  +        DeviceId,
  +        fun( D ) -> D#device{ state = crashed } end,
  +        State#state.devices
  +    ),
  +    State#state{ devices = Devices }.
   
   handle_stop( shutdown, DeviceId, State ) ->
       Devices = orddict:erase( DeviceId, State#state.devices ),
  
positive.code:     { ok, _ } = start( fun() -> { ok, make_ref() } end ),
      ok = setup_meck(),
      meck:expect( lurch_device, start,
          fun( _, _, _, _ ) -> { ok, make_ref() } end
      ),
      meck:expect( lurch_device, stop, 1, ok ).
  
  
negative.code:     { ok, #state{} }.
  
  
  handle_call( { start_device, Configuration }, From, State ) ->
      Driver = proplists:get_value(driver, Configuration),
      Parameters = proplists:get_value(parameters, Configuration),
      Events = proplists:get_value(events, Configuration, []),
  