anchor.diff:  							{hash, [struct, "after"]},
   							[struct, "compare"]
   						]),
  -					CommitList = traverse_json(JSON, [struct, "commits", struct]),
  +					CommitList = traverse_json(JSON, [struct, "commits", array]),
   					ShowList = lists:sublist(CommitList, 3),
  -					Repo = traverse_json(JSON, [struct, "repository", struct, "name"]),
  -					Branch = traverse_json(JSON, {ref, [struct, "ref"]}),
  +					RepoBranch = create_message(JSON, "~s:~s", [
  +							{reponame, [struct, "repository"]},
  +							{ref, [struct, "ref"]}
  +						]),
   					ShowMsgs = lists:map(fun(MJSON) ->
  -						create_message(MJSON, "~s/~s ~s ~s", [
  -							{Repo},
  -							{Branch},
  +						create_message(MJSON, "[~s] ~s ~s: ~s", [
  +							{RepoBranch},
  +							{hash, [struct, "id"]},
   							[struct, "author", struct, "username"],
  -							[struct, "message"]
  +							{trunc_newline, [struct, "message"]}
   						]) end, ShowList),
   					[PushMsg | ShowMsgs];
   				[error, error, error] -> [];
  
positive.code: create_message(JSON, String, FormatJsonPaths) ->
  	io_lib:format(String, lists:map(fun
  			({T}) -> T;
  			({hash,T}) -> {X,_} = lists:split(8, traverse_json(JSON, T)), X;
  			({length,T}) -> length(traverse_json(JSON, T));
  			({ref,T}) ->
  				case traverse_json(JSON, T) of
  					"refs/heads/" ++ Branch -> Branch;
  					X -> X
  				end;
  			(T) -> traverse_json(JSON, T)
  		end, FormatJsonPaths)).
  
negative.code: 			case lists:map(fun(T) -> traverse_json(JSON, [struct, T]) end, ["created", "deleted", "forced"]) of
  				[true, false, _] ->
  					[create_message(JSON, "[~s] ~s created ~s at ~s: ~s", [
  							{reponame, [struct, "repository"]},
  							[struct, "sender", struct, "login"],
  							{ref, [struct, "ref"]},
  							{hash, [struct, "after"]},
  