diff --git a/mysh b/mysh
new file mode 100755
index 0000000000000000000000000000000000000000..eb078009319c297c5d7f03f798c0683dfa947dd2
Binary files /dev/null and b/mysh differ
diff --git a/src/commands.c b/src/commands.c
index 28a7cfcab1b75297ffe7b750166cfbff1f19b6c7..3850db051e56d62aec6cb76ed2f84eea984261d5 100644
--- a/src/commands.c
+++ b/src/commands.c
@@ -1,19 +1,31 @@
 #include <string.h>
-
+#include <stdio.h>
 #include "commands.h"
-
+#include <unistd.h>
+#define MAX_SIZE 300
+char buf[MAX_SIZE];
+int ch;
 int do_cd(int argc, char** argv) {
   if (!validate_cd_argv(argc, argv))
     return -1;
 
+else if ((ch=chdir(argv[1]))==0)
+{
+return 0;
+}
+else{
+return -1;
+}
   // TODO: Fill it!
-  return 0;
+
 }
 
 int do_pwd(int argc, char** argv) {
   if (!validate_pwd_argv(argc, argv))
     return -1;
 
+getcwd(buf,MAX_SIZE);
+printf("%s\n",buf);
   // TODO: Fill it!
 
   return 0;
@@ -22,11 +34,27 @@ int do_pwd(int argc, char** argv) {
 
 int validate_cd_argv(int argc, char** argv) {
   // TODO: Fill it!
-  return 1;
+ if(strcmp(argv[0],"cd")==0)
+{
+if(argc==2)  
+{
+return 1;
+}
+}
+else 
+return 0;
 }
 
 int validate_pwd_argv(int argc, char** argv) {
   // TODO: Fill it!
-  return 1;
+if(strcmp(argv[0],"pwd")==0)
+{
+if(argc==1)  
+{
+return 1;
+}
+}
+else 
+return 0;
 }
 
diff --git a/src/utils.c b/src/utils.c
index 619c771cd29d38dcf0e265e8688b55e1cfe3d6a0..893068ae5123387ebfa40164c093460267a2ddc4 100644
--- a/src/utils.c
+++ b/src/utils.c
@@ -1,7 +1,34 @@
 #include "utils.h"
+#include <string.h>
+#include <stdlib.h>
+void mysh_parse_command(const char* command,int *argc, char*** argv)
+{
+
+char *tmp= (char*)malloc(sizeof(char)*60);
+char *token;
+*argv= (char**)malloc(sizeof(char)*60);
+int c=0;
+*argc=0;
+(*argv)[c]=(char*)malloc(sizeof(char)*60);
+strcpy(tmp,command);
+token=strtok(tmp,"' '\t\n\0");
 
-void mysh_parse_command(const char* command,
-                        int *argc, char*** argv)
+if(token==NULL)
+{
+strcpy((*argv)[c],"");
+c=c+1;
+}
+while(1)
 {
-  // TODO: Fill this!
+if(token==NULL)
+break;
+
+strcpy((*argv)[c],token);
+c=c+1;
+(*argv)[c]=(char*)malloc(sizeof(char)*60);
+token=strtok(NULL,"' '\n\t\0");
+
+}
+*argc=c;
+
 }