anchor.diff:  worker_status(Worker,Timeout) ->
   	lager:debug("Healthcheck on worker: ~p",[Worker]),
   	{WorkerNode,WorkerName} = Worker,
  -
  -	%do healthcheck
  -	gen_server:call({?Dispatcher_Name, WorkerNode}, {WorkerName, 1,self(), healthcheck}, Timeout),
  -	Ans = receive
  -			Any -> Any
  -		after Timeout ->
  -			{error, worker_response_timeout}
  -	end,
  -
  -	%check healthcheck answer and prepare result
   	NameString = atom_to_list(WorkerName),
   	NodeString = atom_to_list(WorkerNode),
  -	case Ans of
  -		ok ->
  -			{worker,[{name,NameString},{node,NodeString},{status,"ok"}],[]};
  -		Error ->
  -			lager:error("Healthcheck on worker ~p failed with error: ~p",[Worker,Error]),
  -			ErrorString = io_lib:format("~p", [Error]),
  -			{worker,[{name,NameString},{node,NodeString},{status,ErrorString}],[]}
  +	try
  +		%do healthcheck
  +		gen_server:call({?Dispatcher_Name, WorkerNode}, {WorkerName, 1,self(), healthcheck}, Timeout),
  +		Ans = receive
  +				Any -> Any
  +			after Timeout ->
  +				{error, worker_response_timeout}
  +		end,
  +
  +		%check healthcheck answer and prepare result
  +		case Ans of
  +			ok ->
  +				{worker,[{name,NameString},{node,NodeString},{status,"ok"}],[]};
  +			ErrorAns ->
  +				lager:error("Healthcheck on worker ~p failed with error: ~p",[Worker,ErrorAns]),
  +				ErrorAnsString = io_lib:format("~p", [ErrorAns]),
  +				{worker,[{name,NameString},{node,NodeString},{status,ErrorAnsString}],[]}
  +		end
  +	catch
  +	    Type:Error ->
  +				lager:error("Worker ~p connection error: ~p:~p",[Worker,Type,Error]),
  +				ErrorString = io_lib:format("~p", [{error,Error}]),
  +				{worker,[{name,NameString},{node,NodeString},{status,ErrorString}],[]}
   	end.
   
   %% contains_errors/1
  
positive.code: handle(Req, State) ->
  	%get data from ccm and env
  	{ok, Timeout} = application:get_env(veil_cluster_node, nagios_healtcheck_timeout),
  	Nodes = gen_server:call({global, ?CCM}, get_nodes, Timeout),
  	{Workers, StateNum} = gen_server:call({global, ?CCM}, get_workers, Timeout),
  	{_, CStateNum} = gen_server:call({global, ?CCM}, get_callbacks, Timeout),
  
  	%check workers
  	WorkersStatus = pmap(fun(Worker) -> worker_status(Worker,Timeout) end,Workers),
  
negative.code: 	NodesStatus = pmap(fun(Node) -> node_status(Node,StateNum,CStateNum,WorkersOk,Timeout) end, Nodes),
  
  	%check if errors occured
  	{HealthStatus, HttpStatusCode} =
  		case CcmConnError/=none of
  			true ->
  				ErrorString = io_lib:format("~p", [{error,CcmConnError}]),
  				{ErrorString,500};
  			false ->
  				case contains_errors(NodesStatus) or contains_errors(WorkersStatus) of
  					true -> {"{error,unhealthy_member}",500};
  					false -> {"ok",200}
  				end
  		end,
  
  	%prepare current date
  	{{YY, MM, DD}, {Hour, Min, Sec}} = calendar:now_to_local_time(now()),
  