diff --git a/NT/tools/grep b/NT/tools/grep
new file mode 100755
index 0000000000000000000000000000000000000000..8e99685953e59a0df3acaaeee0f1181264b12e43
--- /dev/null
+++ b/NT/tools/grep
@@ -0,0 +1,11 @@
+#!/usr/local/bin/pike
+
+inherit "lib.pike";
+
+int main(int argc, string *argv)
+{
+  if(argc>2 && sscanf(argv[-1],"/usr/%s"))
+    exit(1);
+
+  exece(find_next_in_path(argv[0],"grep"),argv[1..]);
+}
diff --git a/NT/tools/mv b/NT/tools/mv
new file mode 100755
index 0000000000000000000000000000000000000000..15bda64ea0e4639a332513e3529921639916aeee
--- /dev/null
+++ b/NT/tools/mv
@@ -0,0 +1,26 @@
+#!/usr/local/bin/pike
+
+inherit "lib.pike";
+
+int main(int argc, string *argv)
+{
+  if(sscanf(argv[-1],"%*[a-zA-Z]:%*s")==2)
+  {
+    argv[0]="rename";
+    if(argv[1]=="-c") argv=argv[..0]+argv[2..];
+    exit(do_cmd( Array.map(argv,fixpath)));
+  }else{
+    argv[0]=find_next_in_path(argv[0],"mv");
+    if(file_stat(argv[1]+".exe"))
+    {
+       string *cmd=({argv[0],argv[1]+".exe",argv[-1]});
+       mixed s=file_stat(cmd[-1]);
+       if(!s || s[1]!=-2) cmd[-1]+=".exe";
+
+       int ret=Process.create_process(cmd)->wait();
+       if(ret) exit(ret);
+    }
+    exece(argv[0],argv[1..]);
+    exit(69);
+  }
+}
diff --git a/NT/tools/nm b/NT/tools/nm
new file mode 100755
index 0000000000000000000000000000000000000000..ddff7dbd9b64796dc107e6b7da944f31acc6fa1b
--- /dev/null
+++ b/NT/tools/nm
@@ -0,0 +1,22 @@
+#!/usr/local/bin/pike
+
+inherit "lib.pike";
+
+int main(int argc, string *argv)
+{
+  string ext=reverse(argv[-1]);
+  sscanf(ext,"%s.",ext);
+  ext=reverse(ext);
+  switch(ext)
+  {
+    case "a":
+    case "lib":
+    case "dll":
+      argv[0]="wlib";
+      exit(do_cmd( Array.map(argv,fixpath)));
+
+    default:
+      exece(find_next_in_path(argv[0],"nm"),argv[1..]);
+      exit(69);
+  }
+}