           else
             thingy.__[k] = v
           if k == 'window'
-            update_window( which ) for which of thingy.__managed_windows
+            for which of thingy.__managed_windows
+              update_window( which, true )
 
         null
 

          ext.hide()
        ext.setPosition( box[0], box[1] )
        ext.setSize( box[2], box[3] )
        null

      @manage_window = ( which, ext ) ->
        @__managed_windows[ which ] = ext
        update_info = =>
          box = ext.getBox()
          @__.window[ which ] =
            visible: ext.isVisible()
            box: [ box.x, box.y, box.width, box.height ]
          @set( window: @__.window )
        ext.on( 'resize', update_info )
        ext.on( 'move',   update_info )
        ext.on( 'hide',   update_info )
        ext.on( 'show',   update_info )
        update_window( which )
        this

      set: (thingy, attrs) ->

        thingyverse.user.add( this )
      )

      update_info = ( which ) =>
        return if @__update_guard
        ext = @__managed_windows[ which ]
        box = ext.getBox()
        new_info =
          visible: ext.isVisible()
          box:     [ box.x, box.y, box.width, box.height ]
        window = @gets( 'window' )
        if window[ which ] != new_info
          window[ which ] = new_info
          @set( window: window )

      update_window = ( which, guard = false ) =>
        @__update_guard = true
        ext      = @__managed_windows[ which ]
        visible  = @__.window[ which ].visible
        box      = @__.window[ which ].box
