diff --git a/w2v-server.pl b/w2v-server.pl
index 181c185..f4f83f6 100644
--- a/w2v-server.pl
+++ b/w2v-server.pl
@@ -57,7 +57,12 @@
 char *stringBuffer;
 
 int init_net(char *file_name) {
-  FILE *f;
+  FILE *f, *binvecs, *binwords;
+	char binvecs_fname[256], binwords_fname[256];
+	strcpy(binwords_fname, file_name);
+	strcat(binwords_fname, ".words");
+	strcpy(binvecs_fname, file_name);
+	strcat(binvecs_fname, ".vecs");
 
 	stringBuffer = malloc(64000);
   f = fopen(file_name, "rb");
@@ -75,20 +80,33 @@
     printf("Cannot allocate memory: %lld MB    %lld  %lld\n", (long long)words * size * sizeof(float) / 1048576, words, size);
     return -1;
   }
-  for (b = 0; b < words; b++) {
-    a = 0;
-    while (1) {
-      vocab[b * max_w + a] = fgetc(f);
-      if (feof(f) || (vocab[b * max_w + a] == ' ')) break;
-      if ((a < max_w) && (vocab[b * max_w + a] != '\n')) a++;
-    }
-    vocab[b * max_w + a] = 0;
-    fread(&M[b * size], sizeof(float), size, f);
-    len = 0;
-    for (a = 0; a < size; a++) len += M[a + b * size] * M[a + b * size];
-    len = sqrt(len);
-    for (a = 0; a < size; a++) M[a + b * size] /= len;
-  }
+	if( (binvecs = fopen(binvecs_fname, "rb")) != NULL && (binwords = fopen(binwords_fname, "rb")) != NULL) {
+		fread(M, sizeof(float), (long long)words * (long long)size, binvecs);
+		fclose(binvecs);
+		fread(vocab, sizeof(char), (long long)words * max_w, binwords);
+		fclose(binwords);
+	} else {
+		for (b = 0; b < words; b++) {
+			a = 0;
+			while (1) {
+				vocab[b * max_w + a] = fgetc(f);
+				if (feof(f) || (vocab[b * max_w + a] == ' ')) break;
+				if ((a < max_w) && (vocab[b * max_w + a] != '\n')) a++;
+			}
+			vocab[b * max_w + a] = 0;
+			fread(&M[b * size], sizeof(float), size, f);
+			len = 0;
+			for (a = 0; a < size; a++) len += M[a + b * size] * M[a + b * size];
+			len = sqrt(len);
+			for (a = 0; a < size; a++) M[a + b * size] /= len;
+		}
+		if( (binvecs = fopen(binvecs_fname, "wb")) != NULL && (binwords = fopen(binwords_fname, "wb")) != NULL) {
+			fwrite(M, sizeof(float), (long long)words * (long long)size, binvecs);
+			fclose(binvecs);
+			fwrite(vocab, sizeof(char), (long long)words * max_w, binwords);
+			fclose(binwords);
+		}
+	}
   fclose(f);
 	return 0;
 }
