diff --git a/group.go b/group.go
index <HASH>..<HASH> 100644
--- a/group.go
+++ b/group.go
@@ -11,8 +11,8 @@ type Group struct {
 
 // Add a sub-group to this group
 func (g *Group) NewGroup(path string) *Group {
-	path = g.path + path
 	checkPath(path)
+	path = g.path + path
 	//Don't want trailing slash as all sub-paths start with slash
 	if path[len(path)-1] == '/' {
 		path = path[:len(path)-1]
diff --git a/group_test.go b/group_test.go
index <HASH>..<HASH> 100644
--- a/group_test.go
+++ b/group_test.go
@@ -13,6 +13,24 @@ func TestGroupMethods(t *testing.T) {
 	}
 }
 
+func TestInvalidSubPath(t *testing.T) {
+	defer func() {
+		if err := recover(); err == nil {
+			t.Error("Bad sub-path should have caused a panic")
+		}
+	}()
+	New().NewGroup("/foo").NewGroup("bar")
+}
+
+func TestInvalidPath(t *testing.T) {
+	defer func() {
+		if err := recover(); err == nil {
+			t.Error("Bad path should have caused a panic")
+		}
+	}()
+	New().NewGroup("foo")
+}
+
 //Liberally borrowed from router_test
 func testGroupMethods(t *testing.T, reqGen RequestCreator) {
 	var result string
Fixed bug in sub-group path checks

added test case for both root group as well as sub group path checks