 			//remove all children
 			copiedBehavior.setChildren(new XMLList());
 			
-			for each (var boneName:String in destinationBoneNames)
-			{
-				if (sharedBoneNames.indexOf(boneName) != -1)
-					copiedBehavior.appendChild(sourceBehavior[ConstValues.BONE].(@[ConstValues.A_NAME] == boneName));
-				else
-				{
-					//todo: how to do in this case?
-				}
-			}
+			for each(var boneName:String in sharedBoneNames)
+			{
+				//todo: calculate the final frame data of this behavior 
+			}
+			
 			return copiedBehavior;
 		}
 	

		
		public function executeBehaviorCopy():void
		{
			var copiedDestinationBehaviors:XMLList = copyBehaviors(selectedSourceBehaviorList, selectedDestinaionBehaviorList, _sharedBoneNames, _destinationBoneNames);
			var destinationName:String = selectedDestinationArmature.@[ConstValues.A_NAME];
			
			

		
		
		
		private function copyBehaviors(sourceBehaviors:XMLList, destinationBehaviors:XMLList, sharedBoneNames:Vector.<String>, sourceBoneList:XMLList,destinaionBonelist:XMLList):XMLList
		{
			var copyContainer:XML = <container/>
			//save the existing behaviors
			copyContainer.appendChild(destinationBehaviors.copy());
			
			
			//
			//calculate the relative coordinates of sourceBoneList and destinaionBonelist
			//
			
			
			for each (var sourceBehavior:XML in sourceBehaviors)
			{
				var sourceBehaviorName:String = sourceBehavior.@[ConstValues.A_NAME];
				if (destinationBehaviors.(@[ConstValues.A_NAME] == sourceBehaviorName).length() == 0)
				{
					copyContainer.appendChild(copyBehavior(sourceBehaviorName, sourceBehavior, sharedBoneNames, sourceBoneList,destinaionBonelist));
				}
				else
				{
					//todo: Duplication of name, how to do in this case?
				}
			}
			
			return copyContainer.children();
		}
		
		private function copyBehavior(behaviorName:String, sourceBehavior:XML, sharedBoneNames:Vector.<String>, sourceBoneList:XMLList,destinaionBonelist:XMLList):XML
		{
			var copiedBehavior:XML = sourceBehavior.copy();
			copiedBehavior.@[ConstValues.A_NAME] = behaviorName;
