diff --git a/ps.c b/ps.c
index bf162bb..c59fc0f 100644
--- a/ps.c
+++ b/ps.c
@@ -53,7 +53,7 @@
 	char
 	 cmd[16];					/* basename of executable file in call to exec(2) */
 	int
-	 ruid, rgid,				/* real only (sorry) */
+	 ruid,						/* real only (sorry) */
 	 pid,						/* process id */
 	 ppid;						/* pid of parent process */
 	char
@@ -101,11 +101,6 @@
 	else
 		error_msg("Internal error!");
 
-	tmp = strstr(S, "Gid:");
-	if (tmp)
-		sscanf(tmp, "Gid:\t%d", &P->rgid);
-	else
-		error_msg("Internal error!");
 
 }
 
@@ -117,7 +112,6 @@
 	struct dirent *entry;
 	char path[32], sbuf[512];
 	char uidName[9];
-	char groupName[9];
 	int len, i, c;
 #ifdef BB_FEATURE_AUTOWIDTH
 	struct winsize win = { 0, 0, 0, 0 };
@@ -138,7 +132,7 @@
 			terminal_width = win.ws_col - 1;
 #endif
 
-	printf("%5s  %-8s %-3s %5s %s\n", "PID", "Uid", "Gid", "State", "Command");
+	printf("%5s  %-8s %5s %s\n", "PID", "Uid", "State", "Command");
 	while ((entry = readdir(dir)) != NULL) {
 		if (!isdigit(*entry->d_name))
 			continue;
@@ -151,16 +145,13 @@
 		my_getpwuid(uidName, p.ruid);
 		if (*uidName == '\0')
 			sprintf(uidName, "%d", p.ruid);
-		my_getgrgid(groupName, p.rgid);
-		if (*groupName == '\0')
-			sprintf(groupName, "%d", p.rgid);
 
 		sprintf(path, "/proc/%s/cmdline", entry->d_name);
 		file = fopen(path, "r");
 		if (file == NULL)
 			continue;
 		i = 0;
-		len = printf("%5d %-8s %-8s %c ", p.pid, uidName, groupName, p.state);
+		len = printf("%5d %-8s %c ", p.pid, uidName, p.state);
 		while (((c = getc(file)) != EOF) && (i < (terminal_width-len))) {
 			i++;
 			if (c == '\0')
@@ -195,7 +186,6 @@
 	pid_t* pid_array = NULL;
 	struct pid_info info;
 	char uidName[9];
-	char groupName[9];
 #ifdef BB_FEATURE_AUTOWIDTH
 	struct winsize win = { 0, 0, 0, 0 };
 	int terminal_width = TERMINAL_WIDTH;
@@ -233,7 +223,7 @@
 #endif
 
 	/* Print up a ps listing */
-	printf("%5s  %-8s %-3s %5s %s\n", "PID", "Uid", "Gid", "State", "Command");
+	printf("%5s  %-8s %5s %s\n", "PID", "Uid", "State", "Command");
 
 	for (i=1; i<pid_array[0] ; i++) {
 	    info.pid = pid_array[i];
@@ -245,11 +235,8 @@
 		my_getpwuid(uidName, info.euid);
 		if (*uidName == '\0')
 			sprintf(uidName, "%ld", info.euid);
-		my_getgrgid(groupName, info.egid);
-		if (*groupName == '\0')
-			sprintf(groupName, "%ld", info.egid);
 
-		len = printf("%5d %-8s %-8s %c ", info.pid, uidName, groupName, info.state);
+		len = printf("%5d %-8s %c ", info.pid, uidName, info.state);
 
 		if (strlen(info.command_line) > 1) {
 			for( j=0; j<(sizeof(info.command_line)-1) && j < (terminal_width-len); j++) {
