diff --git a/main.c b/main.c
index f4bb675ec98cb3a06875df9abaeb7373974aa012..80112d63e7018313ccb6ec787354a77429517327 100644
--- a/main.c
+++ b/main.c
@@ -1,11 +1,11 @@
 #include "alloc.h"
+#include "stdlib.h"
 
-
-int main()
+int main(int argc, char ** argv)
 {
 	int num;
 	char * str[100];
-	char move[4096]; // enough size;
+	char buf[1024]; // enough size;
 	meta * temp = NULL;
 	char * save = NULL;
 	char flag;
@@ -13,43 +13,61 @@ int main()
 	int sequence;
 	int n = 0;
 	int i= 0;
-	scanf("%d %c",&num, &Algorithm);
+	FILE *fp = fopen(argv[1], "r");
+	if(fp == NULL)
+	{
+		printf("Invalid File name.. please recheck File name\n");
+		return 0;
+	}
+	fgets(buf, sizeof(buf), fp);
+	save = strtok(buf , " ");
+	flag = atoi(save);
+	save = strtok(buf , " ");
+	if(strcmp(save , "W") == 0)
+			Algorithm = 'W';
+	else if(strcmp(save , "B") == 0)
+			Algorithm = 'B';
 
-	for(i=0; i < num; i++)
+	else if(strcmp(save , "F") == 0)
+			Algorithm = 'F';
+	while(i++ < flag)
 	{
-//		printf("here?\n");
-		scanf(" %c",&flag);
-		if(flag == 'r')
+	fgets(buf, sizeof(buf), fp);
+	save = strtok(buf , " ");
+
+		if(strcmp(save , "r") == 0)
 		{
-			scanf(" %d %d",&sequence , &size);
+			save = strtok(NULL , " ");
+			sequence = atoi(save);
+			save = strtok(NULL , " ");
+			size = atoi(save);
 			temp = choose_meta(sequence);
 			temp = m_realloc(temp + 1 , size);
 		}	
-		else if(flag == 's')
+		else if(strcmp(save , "s") == 0)
 		{
-		//	printf("asdf\n");
-			scanf(" %[^\n]",move);
-//			printf("size : %d\n", strlen(move));
-			str[n] = m_malloc(strlen(move) +1);
-			strcpy(str[n++], move);
-	//		printf("strlen : %d\n" ,strlen(str[n -1]));
+			save = strtok(NULL , "\n");	
+			str[n] = m_malloc(strlen(save) +1);
+//			printf("buf = %s\n",save);
+			strcpy(str[n++], save);
 		}
-		else if(flag == 'f')
+		else if(strcmp(save , "f") == 0)
 		{
-			scanf(" %d",&sequence);
-//			printf("sequence = %d \n",sequence);
+			save = strtok(NULL , " ");
+			sequence = atoi(save);
 			temp = choose_meta(sequence);
 			m_free(temp + 1);
 		}
-		else if(flag == 'e')
+		else if(strcmp(save , "e") == 0)
 		{
-			scanf(" %d",&size);
+			save = strtok(NULL , " ");
+			size = atoi(save);
 			m_malloc(size);
 		}
 	}
 	temp = META.Head;
 	i=0;
-	printf("\n");
+//	printf("\n");
 	while(temp != NULL)
 	{
 	save = temp + 1;
@@ -61,6 +79,7 @@ int main()
 	temp = temp ->next;
 	
 	}
+	fclose(fp);
 //	printf("\n");
 //	print_link();
 	return 0;