void Update()
    {
        recently_unfocused -= Time.deltaTime;
        transition_time    -= Time.deltaTime;
        pos   = Camera.main.ScreenToWorldPoint(Input.mousePosition);
        pos.x = Mathf.Round(pos.x);
        pos.y = Mathf.Round(pos.y);

        if (selected != "")
        {
            interpreter.text = ship.GetComponentToString(selected);
            interpreter.GetComponent <RectTransform>().sizeDelta = new Vector2(interpreter.GetComponent <RectTransform>().sizeDelta.x, interpreter.text.Split('\n').Length * 26);
        }
        else if (focused != "")
        {
            interpreter.text = ship.GetComponentToString(focused);
            interpreter.GetComponent <RectTransform>().sizeDelta = new Vector2(interpreter.GetComponent <RectTransform>().sizeDelta.x, interpreter.text.Split('\n').Length * 26);
        }
        else
        {
            placement_overlay.transform.position = pos;
            interpreter.text = "";
            interpreter.GetComponent <RectTransform>().sizeDelta = new Vector2(interpreter.GetComponent <RectTransform>().sizeDelta.x, interpreter.text.Split('\n').Length * 26);
        }



        if (Input.GetMouseButtonDown(0))
        {
            clicked        = true;
            click_duration = Time.time;
        }
        if (Input.GetMouseButtonUp(0) && Time.time - click_duration < .5f)
        {
            selected_processor = ship.GetProcessorController(selected);
            if (selected_processor != null && Input.mousePosition.x > 3 * Screen.width / 4 && Input.mousePosition.y < 9 * Screen.height / 10)
            {
                SwitchLeftView(Syntax);
                toggles[GetActiveToggle()].isOn = false;
            }
            if (selected == "" && recently_unfocused < 0 && Input.mousePosition.x > Screen.width / 4 && Input.mousePosition.x < 3 * Screen.width / 4)
            {
                if (focused != "")
                {
                    Select(focused);
                }
                else
                {
                    GameObject object_reference = Prefabs[GetActiveToggle()];

                    var component_gameObject = Instantiate(object_reference, pos, Quaternion.Euler(new Vector3(0, 0, 0))) as GameObject;
                    //move this logic to structure controller, use IfKeyExists
                    int component_count = 1;
                    while (ship.transform.Find("Rotator").Find(object_reference.name + component_count) != null)
                    {
                        component_count++;
                    }
                    component_gameObject.name = object_reference.name + component_count;
                    component_gameObject.GetComponent <SpriteRenderer>().size = object_reference.GetComponent <ComponentController>().GetMinimumSize();
                    component_gameObject.transform.SetParent(ship.transform.Find("Rotator"));
                    component_gameObject.transform.localPosition = new Vector2(
                        Mathf.Round(component_gameObject.transform.localPosition.x),
                        Mathf.Round(component_gameObject.transform.localPosition.y)
                        );
                    component_gameObject.transform.localEulerAngles = new Vector3(0, 0, 0);

                    // Focus(component_gameObject.name);
                }
            }
        }
    }