private void RenderRoomBehaviorButtons()
    {
        roomBehaviorItems = new List <GameObject>();

        UnityEngine.Object buttonPrefab     = Resources.Load("UI/MenuLeft/ConstructionMenu/Button");
        Transform          contentTransform = this.transform.FindChild("Scroll View").FindChild("Viewport").FindChild("Content");

        BuildModeController buildModeController = WorldController.Instance.buildModeController;

        // For each furniture prototype in our world, create one instance
        // of the button to be clicked!
        foreach (string roomBehaviorKey in PrototypeManager.RoomBehavior.Keys)
        {
            if (PrototypeManager.RoomBehavior.Get(roomBehaviorKey).HasTypeTag("Non-buildable") && showAllFurniture == false)
            {
                continue;
            }

            GameObject gameObject = (GameObject)Instantiate(buttonPrefab);
            gameObject.transform.SetParent(contentTransform);
            roomBehaviorItems.Add(gameObject);

            RoomBehavior proto    = PrototypeManager.RoomBehavior.Get(roomBehaviorKey);
            string       objectId = roomBehaviorKey;

            gameObject.name = "Button - Designate " + objectId;

            gameObject.transform.GetComponentInChildren <TextLocalizer>().formatValues = new string[] { LocalizationTable.GetLocalization(proto.LocalizationCode) };

            Button button = gameObject.GetComponent <Button>();

            button.onClick.AddListener(delegate
            {
                buildModeController.SetMode_DesignateRoomBehavior(objectId);
                menuLeft.CloseMenu();
            });

            // http://stackoverflow.com/questions/1757112/anonymous-c-sharp-delegate-within-a-loop
            string roomBehavior = roomBehaviorKey;
            LocalizationTable.CBLocalizationFilesChanged += delegate
            {
                gameObject.transform.GetComponentInChildren <TextLocalizer>().formatValues = new string[] { LocalizationTable.GetLocalization(PrototypeManager.RoomBehavior.Get(roomBehavior).LocalizationCode) };
            };

            Image image = gameObject.transform.GetChild(0).GetComponentsInChildren <Image>().First();
            image.sprite = SpriteManager.GetSprite("RoomBehavior", roomBehaviorKey);
        }
    }