diff --git a/src/commands.c b/src/commands.c
index 28a7cfcab1b75297ffe7b750166cfbff1f19b6c7..d9e355e0bc2289eaae5bb6c8d3e69f82cc446eb5 100644
--- a/src/commands.c
+++ b/src/commands.c
@@ -1,12 +1,13 @@
 #include <string.h>
-
+#include <stdlib.h>
+#include <unistd.h>
 #include "commands.h"
-
+#include <stdio.h>
 int do_cd(int argc, char** argv) {
   if (!validate_cd_argv(argc, argv))
     return -1;
-
   // TODO: Fill it!
+    chdir(argv[1]);
   return 0;
 }
 
@@ -15,18 +16,28 @@ int do_pwd(int argc, char** argv) {
     return -1;
 
   // TODO: Fill it!
-
+	char name[512];
+	getcwd(name,512);
+	printf("%s\n ",name);
+	
   return 0;
 }
 
 
 int validate_cd_argv(int argc, char** argv) {
   // TODO: Fill it!
-  return 1;
+	if(argc==2&& (strcmp(argv[0],"cd")==0)) {
+ 	 	return 1;
+	}
+	 else{
+			 return 0;
+	 }
 }
-
 int validate_pwd_argv(int argc, char** argv) {
   // TODO: Fill it!
-  return 1;
+	if(argc==1 && (strcmp(argv[0], "pwd")==0)) return 1;
+		
+	else return 0;
 }
 
+
diff --git a/src/main.c b/src/main.c
index fddc6fc498fd16b68f563b15fe9853ce2292bfdb..f86d026d28da5c03353e0dd092e5d56cb483a17e 100644
--- a/src/main.c
+++ b/src/main.c
@@ -56,12 +56,10 @@ int main()
 
   while (1) {
     fgets(buf, 8096, stdin);
-
 apply_alias:
     mysh_parse_command(buf, &argc, &argv);
-
     if (strcmp(argv[0], "") == 0) {
-      goto release_and_continue;
+    goto release_and_continue;
     } else if (strcmp(argv[0], "cd") == 0) {
       if (do_cd(argc, argv)) {
         fprintf(stderr, "cd: Invalid arguments\n");
@@ -74,16 +72,18 @@ apply_alias:
       if (do_alias(argc, argv)) {
         fprintf(stderr, "alias: Invalid arguments\n");
       }
-    } else if (strcmp(argv[0], "exit") == 0) {
+    } 
+	else if (strcmp(argv[0], "exit") == 0) {
       goto release_and_exit;
     } else {
       for (int i = 0; i < n_aliased_command; ++i) {
         if (strcmp(argv[0], aliased_commands[i]->alias) == 0) {
-          // TODO: fill here!
-
-          goto apply_alias;
-        }
-      }
+//        		aliased_command[i]->command;
+				
+				// TODO: fill here!
+				goto apply_alias;
+		}
+     }
 
       fprintf(stderr, "%s: command not found\n", argv[0]);
     }
@@ -116,15 +116,35 @@ static void release_argv(int argc, char*** argv) {
 int do_alias(int argc, char** argv) {
   if (!validate_alias_argv(argc, argv))
     return -1;
-
+  else{
+	int *tmp = *argc;
+	*argc=1;
+	strcpy(aliased_command[n_aliased_command]->alias,*(*argv+(*argc)));
+	for(int i=0; i<tmp;i++){
+		strcat(aliased_command[n_aliased_command]->command,*(*argv+i));
+		strcat(aliased_command[n_aliased_command]->command," ");
+	}
+//	printf("%s\n",aliased_command[n_aliased_commnad]->command);
+	n_aliased_command++;
+	
+	//char *tmp = NULL;
+	//tmp=*(*argv+(*argc));
+	
+	//(*argc)++;
+
+ 
   // TODO: Fill it!
 
   return 0;
+  }
 }
 
 int validate_alias_argv(int argc, char** argv) {
-  // TODO: Fill it!
-  return 1;
+  	
+	if(argc>=2 &&!strcmp(argv[0],"alias"))
+			return 1;
+	// TODO: Fill it!
+  	else return 0;
 }
 
 
diff --git a/src/utils.c b/src/utils.c
index 619c771cd29d38dcf0e265e8688b55e1cfe3d6a0..8a2d66f0a206f31d27b1d7a3063f80293eefd6f5 100644
--- a/src/utils.c
+++ b/src/utils.c
@@ -1,7 +1,45 @@
+#include <string.h>
+#include <stdlib.h>
+#include <stdio.h>
 #include "utils.h"
+#define MAX 250
 
 void mysh_parse_command(const char* command,
                         int *argc, char*** argv)
 {
   // TODO: Fill this!
+	
+	char *token=NULL;
+	char command1[MAX];
+	char *tmp = NULL;
+	strcpy(command1,command);
+	if(command1[strlen(command1)-1] == '\n')
+			command1[strlen(command1)-1] = '\0';
+	token = strtok(command1," =\n\"\0");
+//	**argv = (char*)malloc(sizeof(char)*MAX);
+	*argv = (char**)malloc(sizeof(char)*MAX);
+	*argc = 0;
+	while(1)
+	{
+		//printf("while\n");
+		if(token==NULL){
+				//*(*argv+(*argc)) = (char*)malloc(sizeof(char)*MAX);
+				
+				break;
+		}
+		else {
+			//printf("else\n");
+			*(*argv+(*argc)) = (char*)malloc(sizeof(char)*MAX);
+			//printf("malloc\n");
+			strcpy(*(*argv+(*argc)),token);
+			//printf("intoken\n");
+			token = strtok(NULL," =\n\0\"");
+			printf("%s\n",*(*argv+(*argc)));
+			(*argc)++;
+			//printf("%s\n",*(*argv+(*argc)));		
+		}
+	}
+
+
+
 }