//Try to open and read from a selected layer
        public static EditorTileLayerDO OpenEditorLayer(string layerFileName)
        {
            try
            {
                TileLayerCO layerCreationObject = ProcessLayer( layerFileName );
                //Validate this creation object (not yet implemented)
                if( ValidateCreationObject( layerCreationObject ) )
                {
                    //Loop through properties of the layer (alpha channel etc.. ), and store them to initiate/set values in the layer
                    //Property values: alpha channel and layer type - default being normal
                    float alphaValue = 0.0f;
                    LayerType.LayerTypesEnum layerType = LayerType.LayerTypesEnum.Normal;

                    foreach (KeyValuePair<string, string> propertyPair in layerCreationObject.LayerPropertyDictionary)
                    {
                        //handle all properties in switch
                        switch (propertyPair.Key.Trim().ToLower())
                        {
                            case "alpha":
                                alphaValue = float.Parse(propertyPair.Value);
                                break;
                            case "layer type index":
                                layerType = (LayerType.LayerTypesEnum)(int.Parse( propertyPair.Value ) );
                                break;
                            default:
                                break;
                        }
                    }

                    //Create new editor tile layer
                    EditorTileLayer editorTileLayer = new EditorTileLayer( layerCreationObject.LayerWidth, layerCreationObject.LayerHeight, layerType );

                    //Set all properties of tile layer, and intialize all editor tiles within this editor layer
                    for (int x = 0; x < layerCreationObject.LayerWidth; x++)
                        for (int y = 0; y < layerCreationObject.LayerHeight; y++)
                            editorTileLayer.SetCellIndex( x, y, layerCreationObject.LayerIndexLayout[x][y]);

                    //Set the return data object, to return the initialized editor tile layer, and the texture names, so the necessary textures
                    //can be added to managed data, and added into the layer's texture list.
                    EditorTileLayerDO editorLayerDO = new EditorTileLayerDO( editorTileLayer, layerCreationObject.LayerTextureNameList );

                    return editorLayerDO;
                }
                else
                    return null;
            }
            catch( Exception e )
            {
                throw e;
            }
        }