|  | @@ -60,12 +60,12 @@ list_output(X) ->
 | 
	
		
			
				|  |  |  %%% Simplification
 | 
	
		
			
				|  |  |  %%%-----------------------------------------------------------------------------
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -simpl(#pipe{ops=Inside}) ->
 | 
	
		
			
				|  |  | -    flatten(ebb_prim:pipe(simpl_pipe([ simpl(O) || O <- Inside ])));
 | 
	
		
			
				|  |  | -simpl(#par{ops=Inside}) ->
 | 
	
		
			
				|  |  | -    flatten(ebb_prim:par(simpl_par([ simpl(O) || O <- Inside ])));
 | 
	
		
			
				|  |  | -simpl(#switch{map=Map}) ->
 | 
	
		
			
				|  |  | -    ebb_prim:switch([ {Tag, simpl(Op)} || {Tag, Op} <- Map ]);
 | 
	
		
			
				|  |  | +simpl(Pipe = #pipe{ops=Inside}) ->
 | 
	
		
			
				|  |  | +    flatten(Pipe#pipe{ops=simpl_pipe([ simpl(O) || O <- Inside ])});
 | 
	
		
			
				|  |  | +simpl(Par = #par{ops=Inside}) ->
 | 
	
		
			
				|  |  | +    flatten(Par#par{ops=simpl_par([ simpl(O) || O <- Inside ])});
 | 
	
		
			
				|  |  | +simpl(Switch = #switch{map=Map}) ->
 | 
	
		
			
				|  |  | +    Switch#switch{map=[ {Tag, simpl(Op)} || {Tag, Op} <- Map ]};
 | 
	
		
			
				|  |  |  simpl(Op) ->
 | 
	
		
			
				|  |  |      case ebb_prim:is_operation(Op) of
 | 
	
		
			
				|  |  |  	true  -> Op;
 | 
	
	
		
			
				|  | @@ -83,7 +83,11 @@ simpl_pipe(R2 = #route{in=N}, Acc) ->
 | 
	
		
			
				|  |  |      case {R2 == ebb_flow:id(N), Acc} of
 | 
	
		
			
				|  |  |  	{true, _} -> Acc;
 | 
	
		
			
				|  |  |  	{false, [R1 = #route{} | Rest]} ->
 | 
	
		
			
				|  |  | -	    [simpl_pipe_route(R1, R2) | Rest];
 | 
	
		
			
				|  |  | +	    R3 = #route{in=N3} = simpl_pipe_route(R1, R2),
 | 
	
		
			
				|  |  | +	    case R3 == ebb_flow:id(N3) of
 | 
	
		
			
				|  |  | +		true -> Rest;
 | 
	
		
			
				|  |  | +		false -> [R3 | Rest]
 | 
	
		
			
				|  |  | +	    end;
 | 
	
		
			
				|  |  |  	{false, _} -> [R2 | Acc]
 | 
	
		
			
				|  |  |      end;
 | 
	
		
			
				|  |  |  simpl_pipe(#split{size=N}, [#merge{size=N} | Acc]) ->
 |