diff --git a/w2v-server.pl b/w2v-server.pl
index c2d96bb..2bc555f 100644
--- a/w2v-server.pl
+++ b/w2v-server.pl
@@ -115,9 +115,9 @@
 		for (b = 0; b < words; b++) if (!strcmp(&vocab[b * max_w], st[a])) break;
 		if (b == words) b = -1;
 		bi[a] = b;
-		sprintf(stringBuffer, "\n<pre>Word: \"%s\"  Position in vocabulary: %lld</pre>\n", st[a], bi[a]);
+		fprintf(stderr, "Word: \"%s\"  Position in vocabulary: %lld\n", st[a], bi[a]);
 		if (b == -1) {
-			sprintf(stringBuffer+strlen(stringBuffer), "Out of dictionary word!\n");
+			fprintf(stderr, "Out of dictionary word!\n");
 			break;
 		}
 	}
@@ -135,8 +135,9 @@
 	for (a = 0; a < N; a++) bestw[a][0] = 0;
 	for (c = 0; c < words; c++) {
 		a = 0;
-		for (b = 0; b < cn; b++) if (bi[b] == c) a = 1;
-		if (a == 1) continue;
+// don not skip taget word
+//		for (b = 0; b < cn; b++) if (bi[b] == c) a = 1;
+//		if (a == 1) continue;
 		dist = 0;
 		for (a = 0; a < size; a++) dist += vec[a] * M[a + c * size];
 		for (a = 0; a < N; a++) {
@@ -239,7 +240,13 @@
     g.append("text")
       .attr("text-anchor", "top")
       .attr("font-size", 12)
-      .attr("fill", "#333")
+      .attr("fill", function(d) {
+				if(d == data.target) {
+					return "red";
+				} else {
+					return "#333"
+				}
+			})
       .text(function(d) { return d; });
 
     var zoomListener = d3.behavior.zoom()
@@ -346,7 +353,7 @@
 		<script>
 			% use Mojo::ByteStream 'b';
 $(window).load(function() {
-			showMap(<%= b(Mojo::JSON::to_json({words => \@words, vecs => \@vecs})); %>);
+			showMap(<%= b(Mojo::JSON::to_json({target => $word, words => \@words, vecs => \@vecs})); %>);
 });
     </script>
 	% }
