anchor.diff:              match signalObj with
               | :? Signal<'message, obj> as signal -> screen.Signal<'model, 'message, 'command> (match signal with Message message -> msg message | _ -> failwithumf ()) world
               | :? Signal<obj, 'command> as signal -> screen.Signal<'model, 'message, 'command> (match signal with Command command -> cmd command | _ -> failwithumf ()) world
  -            | _ -> Log.info "Incorrect signal type returned from event binding."; world
  +            | _ ->
  +                match signalObj with
  +                | :? string as signalStr when typeof<'model> <> typeof<string> ->
  +                    try let signal = scvalue<'model> signalStr
  +                        this.TrySignal (signal, screen, world)
  +                    with exn ->
  +                        Log.info ("Incorrect signal type received by screen (signal = '" + scstring signalObj + "'; screen = '" + scstring screen + "').")
  +                        World.choose world
  +                | :? Symbol as signalSym when typeof<'model> <> typeof<Symbol> ->
  +                    try let signal = symbolToValue<'model> signalSym
  +                        this.TrySignal (signal, screen, world)
  +                    with exn ->
  +                        Log.info ("Incorrect signal type received by screen (signal = '" + scstring signalObj + "'; screen = '" + scstring screen + "').")
  +                        World.choose world
  +                | _ ->
  +                    Log.info ("Incorrect signal type received by screen (signal = '" + scstring signalObj + "'; screen = '" + scstring screen + "').")
  +                    world
   
           override this.TrySynchronize (initializing, screen, world) =
               let contentOld = World.getScreenContent screen world
  
positive.code:             match signalObj with
              | :? Signal<'message, obj> as signal -> group.Signal<'model, 'message, 'command> (match signal with Message message -> msg message | _ -> failwithumf ()) world
              | :? Signal<obj, 'command> as signal -> group.Signal<'model, 'message, 'command> (match signal with Command command -> cmd command | _ -> failwithumf ()) world
              | _ -> Log.info "Incorrect signal type returned from event binding."; world
  
          override this.TrySynchronize (initializing, group, world) =
              let contentOld = World.getGroupContent group world
  
negative.code:             match signalObj with
              | :? Signal<'message, obj> as signal -> game.Signal<'model, 'message, 'command> (match signal with Message message -> msg message | _ -> failwithumf ()) world
              | :? Signal<obj, 'command> as signal -> game.Signal<'model, 'message, 'command> (match signal with Command command -> cmd command | _ -> failwithumf ()) world
              | _ ->
                  match signalObj with
                  | :? string as signalStr when typeof<'model> <> typeof<string> ->
                      try let signal = scvalue<'model> signalStr
                          this.TrySignal (signal, game, world)
                      with exn ->
                          Log.info ("Incorrect signal type received by game (signal = '" + scstring signalObj + "').")
                          World.choose world
                  | :? Symbol as signalSym when typeof<'model> <> typeof<Symbol> ->
                      try let signal = symbolToValue<'model> signalSym
                          this.TrySignal (signal, game, world)
                      with exn ->
                          Log.info ("Incorrect signal type received by game (signal = '" + scstring signalObj + "').")
                          World.choose world
                  | _ ->
                      Log.info ("Incorrect signal type received by game (signal = '" + scstring signalObj + "').")
                      world
  
          override this.TrySynchronize (initializing, game, world) =
              synchronize initializing game world this |> snd
  