/// <summary>
        /// Sort existin elements
        /// </summary>
        /// <param name="elements"></param>
        /// <param name="form"></param>
        /// <param name="curFilter"></param>
        /// <returns></returns>
		public int Sort( List<RecTMElement> elements, RecProductionFormStd form, BedFilter curFilter )
		{
			if( null == form || null == elements || elements.Count == 0 )
			{
				var msg = string.Format( "Missing sorting input!" );
				throw new FaultException<BusinessFaultContract>( new BusinessFaultContract() { Argument = msg }, "Cannot sort form!" );
			}

			this.filter = curFilter;
            var bed = new ProductionBed( form, curFilter );

			var positionedElements = bed.FillBed( elements );
			var savedElem = bed.Save( positionedElements );

            if( savedElem < elements.Count )
            {
                // remove the delta
                var mgr = new ProjectManager();
                var planner = new ModelPlanner();
                foreach( RecTMElement elem in elements )
                {
                    if( !mgr.Find( positionedElements, elem ) )
                    {
                        planner.ResetElementProduction( elem.Factory, elem.Project, 0, elem.ElementId, false );
                    }
                }
            }

            return 0;
		}