public void Initialize()
    {
        /* Create mesh renderer */
        MeshRenderer meshRenderer = PolygonUtilities.AddMeshRenderer(gameObject, "UI/Default");


        /* Create mesh filter */
        mesh = PolygonUtilities.AddMesh(gameObject);

        vertices = GenerateVertices();

        mesh.vertices = vertices;

        mesh.triangles = GetTriangles();

        mesh.normals = GetNormals();

        mesh.uv = GetUVs();

        meshRenderer.sharedMaterial.color = color;

        /* Create collider for dragging */
        PolygonUtilities.BuildColliderForDrag(gameObject, radius);

        /* Create borders */
        PolygonUtilities.DrawBorder(gameObject, vertices,
                                    borderColor, .08f, "Sprites/Default");

        InitializeTexObjects();

        minY = vertices[0].y;
        Debug.Log(vertices.Length);

        for (int i = 0; i < vertices.Length; i++)
        {
            Debug.Log(vertices[i].y);
            if (minY > vertices[i].y)
            {
                minY = vertices[i].y;
            }
        }

        float v = (radius - minY) / 2;

        midY = v + minY;

        resizeHandles(north, HandlePosition.N);
        resizeHandles(northEast, HandlePosition.NE);
        resizeHandles(northWest, HandlePosition.NW);
        resizeHandles(west, HandlePosition.W);
        resizeHandles(east, HandlePosition.E);
        resizeHandles(southEast, HandlePosition.SE);
        resizeHandles(south, HandlePosition.S);
        resizeHandles(southWest, HandlePosition.SW);
    }