void EditImprovement(string name, Mesh mesh, Texture2D texture, bool replaceGroundTexture, int index)
        {
            int[]          finalTiles    = new int[iPossibleTiles.Count];
            List <Feature> finalFeatures = new List <Feature>();

            finalTiles = iPossibleTiles.ToArray();

            //fill feature list with data from rule.possibleFeatures
            for (int i = 0; i < iPossibleFeatures.Count; i++)
            {
                finalFeatures.Add(iPossibleFeatures[i]);
            }


            //nullify duplicate tiles
            for (int i = 0; i < iPossibleTiles.Count; i++)
            {
                for (int z = 0; z < iPossibleTiles.Count; z++)
                {
                    if (iPossibleTiles[i] == iPossibleTiles[z] && i != z)
                    {
                        iPossibleTiles.RemoveAt(z);
                    }
                }
            }
            finalTiles = iPossibleTiles.ToArray();

            //nullify duplicate features
            for (int i = 0; i < finalFeatures.Count; i++)
            {
                for (int z = 0; z < finalFeatures.Count; z++)
                {
                    if (finalFeatures[i] == finalFeatures[z] && i != z)
                    {
                        finalFeatures.RemoveAt(z);
                    }
                }
            }

            improvementManager.AddImprovementAtIndex(new Improvement(name, mesh, texture, replaceGroundTexture, new HexRule(finalTiles, finalFeatures.ToArray())), index);
        }