anchor.diff:  			$json = JSON.stringify($recipe);
   			console.log( "Recipe : " + $json );
   			
  -			$.when(
  -				$.ajax({
  +			$.ajax({
   				    url: "recipes/" + $recipe.uuid,
   				    method: "PUT",
   				    contentType: "application/json; charset=UTF-8",
   				    data: $json
  -			    })
  -				.fail( function( xhr, status, error ) {
  +			})
  +			.fail( function( xhr, status, error ) {
      				    var err = status + ", " + error;
     					console.log( "Request Failed: " + err );
  -  				})
  -  			).then( function() {
  -  				updateIngredients( $recipe.uuid );
  -			    alert("Rezept gespeichert.");
     			})
  -			
  +  			.then( function() {
  +  				updateIngredients( $recipe.uuid ).then( deferred.resolve );
  +  			})
  +			
  +			return deferred.promise();
   		}
   		
   		function updateIngredients( recipeId ) {
  +			var deferred = $.Deferred();
   			$( ".ingredient" ).each( function( index, li ) {
   				$( "body" ).queue( function() {
   					$ingredient = {};
  
positive.code: 				    	},
  				    	forceLowercase: true
  				    } );
  				    initDone();
  				})
  				.fail( function( xhr, status, error ) {
  	  				var err = status + ", " + error;
  	 				console.log( "Request Failed: " + err );
   				})
  		}
  		
  		$( function() {
  
negative.code: 					updateIngredient( $( li ).is(":hidden"), $ingredient, recipeId );
  				})
  			});
  			$( "body" ).promise().done( deferred.resolve );
  			return deferred.promise();
  		}
  		
  		function updateIngredient( isHidden, ingredient, recipeId ) {
  			$url = "recipes/" + recipeId + "/ingredients/";
  			
  			if ( isHidden ) {
  				console.log( "Ingredient for delete : " + JSON.stringify( $ingredient ) );
  				$.ajax({
  					type: "DELETE",
  					url: $url + $ingredient.resourceId,
  					success: function() { $( "body" ).dequeue(); }
  				});
  			} else {
  				if ( $ingredient.resourceId == undefined ) {
  					console.log( "new Ingredient : " + JSON.stringify( $ingredient ) );
  					$.ajax({
  						type: "POST",
  						url: $url,
  						data: JSON.stringify( $ingredient ),
  						contentType: "application/json; charset=UTF-8",
  						success: function() { $( "body" ).dequeue(); }
  					});
  				} else {
  					console.log( "exists Ingredient : " + JSON.stringify( $ingredient ) );
  					$.ajax({
  						type: "PUT",
  						url: $url + $ingredient.resourceId,
  						data: JSON.stringify( $ingredient ),
  						contentType: "application/json; charset=UTF-8",
  						success: function() { $( "body" ).dequeue(); }
  					});
  				}
  			}
  		}
  		
  		function init() {
  			var deferred = $.Deferred();
  			$.getJSON( "recipes/tags" )
  				.done( function( tags ) { 
  					$allTags = tags;
  