diff --git a/gql/parser.go b/gql/parser.go
index 2f7cc1111685d2fe21b6308e7c12d0e75fbe458e..bc63388140dd6b88861fce94a37fb1e04867635b 100644
--- a/gql/parser.go
+++ b/gql/parser.go
@@ -238,24 +238,19 @@ func godeep(l *lex.Lexer, gq *GraphQuery) error {
 			return nil
 
 		} else if item.Typ == itemLeftRound {
-			// absorb all these, we don't use them right now.
-			/*
-				for {
-					var key, val string
-					item = <-l.Items
-					if item.Typ == itemArgName {
-						key = item.Val
-					} else if item.Typ == itemRightRound {
-						break
-					} else {
-						return nil, fmt.Errorf("Expecting argument name. Got: %v", item)
+
+			args, err := parseArguments(l)
+			if err != nil {
+				return err
+			}
+			// We only use argument 'first' for now.
+			for _, p := range args {
+				if p.Key == "first" {
+					count, err := strconv.ParseInt(p.Val, 0, 32)
+					if err != nil {
+						return err
 					}
-				}
-			*/
-			for ti := range l.Items {
-				fmt.Println(ti.String())
-				if ti.Typ == itemRightRound || ti.Typ == lex.ItemEOF {
-					return nil
+					curp.First = int(count)
 				}
 			}
 		}
diff --git a/gql/parser_test.go b/gql/parser_test.go
index fb5d1c81a0ac63cbbed58ccb1adb452a793fee2e..e9bea44397c15ac99e0efa3095a882188bd9d2aa 100644
--- a/gql/parser_test.go
+++ b/gql/parser_test.go
@@ -101,9 +101,7 @@ func TestParseXid(t *testing.T) {
 	}
 }
 
-/*
 func TestParseFirst(t *testing.T) {
-	// logrus.SetLevel(logrus.DebugLevel)
 	query := `
 	query {
 		user(_xid_: m.abcd) {
@@ -121,14 +119,39 @@ func TestParseFirst(t *testing.T) {
 		t.Error("subgraph is nil")
 		return
 	}
-	if len(gq.Children) != 1 {
-		t.Errorf("Expected 1 children. Got: %v", len(gq.Children))
+	if len(gq.Children) != 2 {
+		t.Errorf("Expected 2 children. Got: %v", len(gq.Children))
 	}
 	if err := checkAttr(gq.Children[0], "type.object.name"); err != nil {
 		t.Error(err)
 	}
+	if gq.Children[0].First != 0 {
+		t.Errorf("Expected count 0. Got: %v", gq.Children[0].First)
+	}
+	if err := checkAttr(gq.Children[1], "friends"); err != nil {
+		t.Error(err)
+	}
+	if gq.Children[1].First != 10 {
+		t.Errorf("Expected count 10. Got: %v", gq.Children[1].First)
+	}
+}
+
+func TestParseFirst_error(t *testing.T) {
+	query := `
+	query {
+		user(_xid_: m.abcd) {
+			type.object.name
+			friends (first: ) {
+			}
+		}
+	}`
+	var err error
+	_, _, err = Parse(query)
+	t.Log(err)
+	if err == nil {
+		t.Error("Expected error")
+	}
 }
-*/
 
 func TestParse_error2(t *testing.T) {
 	query := `