public void Clicked()
    {
        // initialize a move
        switch (m_CurrentTool)
        {
        case Tool.Line:
            m_PointerController.IncreaseSizeOfPointer();

            // draw point ?
            drawing = Tool.Line;


            // TODO:
            m_DrawableLine.StartDrawing(m_Pointer.transform.position);

            break;

        case Tool.Area:
            if (m_PointerController.collidingObject != null && m_PointerController.collidingObject.name.Contains("Line"))
            {
                m_PointerController.IncreaseSizeOfPointer();

                m_LineForArea = m_PointerController.collidingObject;
                drawing       = Tool.Area;

                // TODO: change back
                m_DrawableArea.m_UpVec  = m_LineForArea.transform.up;
                m_DrawableArea.m_YScale = m_LineForArea.transform.localScale.y;
                m_DrawableArea.StartDrawing(m_LineForArea.transform.position);

                Dragged();     // TODO: do we need? if so add to post start
            }
            break;

        case Tool.Volume:
            if (m_PointerController.collidingObject != null)
            {
                m_PointerController.IncreaseSizeOfPointer();

                if (m_PointerController.collidingObject.transform.parent.gameObject.name.Contains("Area"))
                {
                    m_AreaForVolume = m_PointerController.collidingObject.transform.parent.gameObject;
                    drawing         = Tool.Volume;
                    // TODO: change back
                    m_DrawableVolume.m_AreaLocalRotation = m_AreaForVolume.transform.localRotation;
                    m_DrawableVolume.m_AreaLocalScale    = m_AreaForVolume.transform.localScale;
                    m_DrawableVolume.m_AreaForwardDir    = m_AreaForVolume.transform.forward;
                    m_DrawableVolume.StartDrawing(m_AreaForVolume.transform.position);
                }
                else if (m_PointerController.collidingObject.transform.name.Contains("Mesh"))
                {
                    // start extruding mesh
                    m_MeshForVolume = m_PointerController.collidingObject;
                    drawing         = Tool.Volume;
                    initialPosition = m_MeshForVolume.transform.position;

                    m_MeshCreatorController = m_MeshForVolume.GetComponent <MeshCreatorController>();
                }

                Dragged();
            }
            break;

        case Tool.Sphere:
            drawing = Tool.Sphere;
            m_DrawableSphere.StartDrawing(m_Pointer.transform.position);
            break;

        case Tool.Mesh:


            // TODO
            // maybe create a plane that we draw on with a grid (could make the grid lines variable in spacing)
            break;

        case Tool.None:
        default:
            drawing = Tool.None;
            break;
        }
    }