/// <summary>
        /// Set the value of a property
        /// </summary>
        /// <param name="property">Property</param>
        /// <param name="value">Value, must be serializable for synchronization</param>
        /// <param name="overwrite">Whether to overwrite the value of the property if already present. Default : true</param>
        public virtual void Set(string property, Property value, bool overwrite = true)
        {
            if (Has(property))
            {
                if (overwrite)
                {
                    Handle[property] = value;
                }
            }
            else
            {
                Handle.Add(property, value);
            }

            if (AutoSynchronization)
            {
                Synchronize();
            }
        }