/// <summary>
        /// Converts AgilityContentItem into a dynamic ExpandoObject so additional properties can be added easily. Sets a "Key" field use in the frontend. Defaults to "ContentID".
        /// </summary>
        /// <param name="o"></param>
        /// <returns></returns>
        public static dynamic ToFrontendProps(this AgilityContentItem ci, string keyField = "ContentID")
        {
            //convert to expando object
            var o = ci.ToDynamic(removeHrefTilde: true) as IDictionary <string, Object>;

            //set a key if we can
            SetKey(o, keyField);

            //remove unwanted props
            IgnoreProps(o);

            return(o);
        }