Rename n.path to n.prefix
diff --git a/tree.go b/tree.go
index 3ff6394..d768e04 100644
--- a/tree.go
+++ b/tree.go
@@ -39,7 +39,7 @@
 )
 
 type node struct {
-	path      string
+	prefix    string
 	wildChild bool
 	nType     nodeType
 	maxParams uint8
@@ -83,7 +83,7 @@
 	numParams := countParams(path)
 
 	// non-empty tree
-	if len(n.path) > 0 || len(n.children) > 0 {
+	if len(n.prefix) > 0 || len(n.children) > 0 {
 	walk:
 		for {
 			// Update maxParams of the current node
@@ -95,15 +95,15 @@
 			// This also implies that the common prefix contains no ':' or '*'
 			// since the existing key can't contain those chars.
 			i := 0
-			max := min(len(path), len(n.path))
-			for i < max && path[i] == n.path[i] {
+			max := min(len(path), len(n.prefix))
+			for i < max && path[i] == n.prefix[i] {
 				i++
 			}
 
 			// Split edge
-			if i < len(n.path) {
+			if i < len(n.prefix) {
 				child := node{
-					path:      n.path[i:],
+					prefix:    n.prefix[i:],
 					wildChild: n.wildChild,
 					indices:   n.indices,
 					children:  n.children,
@@ -120,8 +120,8 @@
 
 				n.children = []*node{&child}
 				// []byte for proper unicode char conversion, see #65
-				n.indices = string([]byte{n.path[i]})
-				n.path = path[:i]
+				n.indices = string([]byte{n.prefix[i]})
+				n.prefix = path[:i]
 				n.handle = nil
 				n.wildChild = false
 			}
@@ -141,15 +141,15 @@
 					numParams--
 
 					// Check if the wildcard matches
-					if len(path) >= len(n.path) && n.path == path[:len(n.path)] {
+					if len(path) >= len(n.prefix) && n.prefix == path[:len(n.prefix)] {
 						// check for longer wildcard, e.g. :name and :names
-						if len(n.path) >= len(path) || path[len(n.path)] == '/' {
+						if len(n.prefix) >= len(path) || path[len(n.prefix)] == '/' {
 							continue walk
 						}
 					}
 
 					panic("path segment '" + path +
-						"' conflicts with existing wildcard '" + n.path +
+						"' conflicts with existing wildcard '" + n.prefix +
 						"' in path '" + fullPath + "'")
 				}
 
@@ -236,7 +236,7 @@
 		if c == ':' { // param
 			// split path at the beginning of the wildcard
 			if i > 0 {
-				n.path = path[offset:i]
+				n.prefix = path[offset:i]
 				offset = i
 			}
 
@@ -253,7 +253,7 @@
 			// if the path doesn't end with the wildcard, then there
 			// will be another non-wildcard subpath starting with '/'
 			if end < max {
-				n.path = path[offset:end]
+				n.prefix = path[offset:end]
 				offset = end
 
 				child := &node{
@@ -269,7 +269,7 @@
 				panic("catch-all routes are only allowed at the end of the path in path '" + fullPath + "'")
 			}
 
-			if len(n.path) > 0 && n.path[len(n.path)-1] == '/' {
+			if len(n.prefix) > 0 && n.prefix[len(n.prefix)-1] == '/' {
 				panic("catch-all conflicts with existing handle for the path segment root in path '" + fullPath + "'")
 			}
 
@@ -279,7 +279,7 @@
 				panic("no / before catch-all in path '" + fullPath + "'")
 			}
 
-			n.path = path[offset:i]
+			n.prefix = path[offset:i]
 
 			// first node: catchAll node with empty path
 			child := &node{
@@ -294,7 +294,7 @@
 
 			// second node: node holding the variable
 			child = &node{
-				path:      path[i:],
+				prefix:    path[i:],
 				nType:     catchAll,
 				maxParams: 1,
 				handle:    handle,
@@ -307,7 +307,7 @@
 	}
 
 	// insert remaining path part and handle to the leaf
-	n.path = path[offset:]
+	n.prefix = path[offset:]
 	n.handle = handle
 }
 
@@ -319,9 +319,9 @@
 func (n *node) getValue(path string, psp *Params) (handle Handle, tsr bool) {
 walk: // Outer loop for walking the tree
 	for {
-		if len(path) > len(n.path) {
-			if path[:len(n.path)] == n.path {
-				path = path[len(n.path):]
+		if len(path) > len(n.prefix) {
+			if path[:len(n.prefix)] == n.prefix {
+				path = path[len(n.prefix):]
 				// If this node does not have a wildcard (param or catchAll)
 				// child,  we can just look up the next child node and continue
 				// to walk down the tree
@@ -356,7 +356,7 @@
 					if psp != nil {
 						i := len(*psp)
 						*psp = (*psp)[:i+1] // expand slice within preallocated capacity
-						(*psp)[i].Key = n.path[1:]
+						(*psp)[i].Key = n.prefix[1:]
 						(*psp)[i].Value = path[:end]
 					}
 
@@ -379,7 +379,7 @@
 						// No handle found. Check if a handle for this path + a
 						// trailing slash exists for TSR recommendation
 						n = n.children[0]
-						tsr = (n.path == "/" && n.handle != nil)
+						tsr = (n.prefix == "/" && n.handle != nil)
 					}
 
 					return
@@ -389,7 +389,7 @@
 					if psp != nil {
 						i := len(*psp)
 						*psp = (*psp)[:i+1] // expand slice within preallocated capacity
-						(*psp)[i].Key = n.path[2:]
+						(*psp)[i].Key = n.prefix[2:]
 						(*psp)[i].Value = path
 					}
 
@@ -400,7 +400,7 @@
 					panic("invalid node type")
 				}
 			}
-		} else if path == n.path {
+		} else if path == n.prefix {
 			// We should have reached the node containing the handle.
 			// Check if this node has a handle registered.
 			if handle = n.handle; handle != nil {
@@ -412,7 +412,7 @@
 			for i := 0; i < len(n.indices); i++ {
 				if n.indices[i] == '/' {
 					n = n.children[i]
-					tsr = (len(n.path) == 1 && n.handle != nil) ||
+					tsr = (len(n.prefix) == 1 && n.handle != nil) ||
 						(n.nType == catchAll && n.children[0].handle != nil)
 					return
 				}
@@ -424,8 +424,8 @@
 		// Nothing found. We can recommend to redirect to the same URL with an
 		// extra trailing slash if a leaf exists for that path
 		tsr = (path == "/") ||
-			(len(n.path) == len(path)+1 && n.path[len(path)] == '/' &&
-				path == n.path[:len(n.path)-1] && n.handle != nil)
+			(len(n.prefix) == len(path)+1 && n.prefix[len(path)] == '/' &&
+				path == n.prefix[:len(n.prefix)-1] && n.handle != nil)
 		return
 	}
 }
@@ -438,9 +438,9 @@
 	ciPath = make([]byte, 0, len(path)+1) // preallocate enough memory
 
 	// Outer loop for walking the tree
-	for len(path) >= len(n.path) && strings.ToLower(path[:len(n.path)]) == strings.ToLower(n.path) {
-		path = path[len(n.path):]
-		ciPath = append(ciPath, n.path...)
+	for len(path) >= len(n.prefix) && strings.ToLower(path[:len(n.prefix)]) == strings.ToLower(n.prefix) {
+		path = path[len(n.prefix):]
+		ciPath = append(ciPath, n.prefix...)
 
 		if len(path) > 0 {
 			// If this node does not have a wildcard (param or catchAll) child,
@@ -498,7 +498,7 @@
 					// No handle found. Check if a handle for this path + a
 					// trailing slash exists
 					n = n.children[0]
-					if n.path == "/" && n.handle != nil {
+					if n.prefix == "/" && n.handle != nil {
 						return append(ciPath, '/'), true
 					}
 				}
@@ -523,7 +523,7 @@
 				for i := 0; i < len(n.indices); i++ {
 					if n.indices[i] == '/' {
 						n = n.children[i]
-						if (len(n.path) == 1 && n.handle != nil) ||
+						if (len(n.prefix) == 1 && n.handle != nil) ||
 							(n.nType == catchAll && n.children[0].handle != nil) {
 							return append(ciPath, '/'), true
 						}
@@ -541,10 +541,10 @@
 		if path == "/" {
 			return ciPath, true
 		}
-		if len(path)+1 == len(n.path) && n.path[len(path)] == '/' &&
-			strings.ToLower(path) == strings.ToLower(n.path[:len(path)]) &&
+		if len(path)+1 == len(n.prefix) && n.prefix[len(path)] == '/' &&
+			strings.ToLower(path) == strings.ToLower(n.prefix[:len(path)]) &&
 			n.handle != nil {
-			return append(ciPath, n.path...), true
+			return append(ciPath, n.prefix...), true
 		}
 	}
 	return
diff --git a/tree_test.go b/tree_test.go
index 187b349..c0be57c 100644
--- a/tree_test.go
+++ b/tree_test.go
@@ -13,8 +13,8 @@
 )
 
 func printChildren(n *node, prefix string) {
-	fmt.Printf(" %02d:%02d %s%s[%d] %v %t %d \r\n", n.priority, n.maxParams, prefix, n.path, len(n.children), n.handle, n.wildChild, n.nType)
-	for l := len(n.path); l > 0; l-- {
+	fmt.Printf(" %02d:%02d %s%s[%d] %v %t %d \r\n", n.priority, n.maxParams, prefix, n.prefix, len(n.children), n.handle, n.wildChild, n.nType)
+	for l := len(n.prefix); l > 0; l-- {
 		prefix += " "
 	}
 	for _, child := range n.children {
@@ -80,7 +80,7 @@
 	if n.priority != prio {
 		t.Errorf(
 			"priority mismatch for node '%s': is %d, should be %d",
-			n.path, n.priority, prio,
+			n.prefix, n.priority, prio,
 		)
 	}
 
@@ -102,7 +102,7 @@
 	if n.maxParams != maxParams {
 		t.Errorf(
 			"maxParams mismatch for node '%s': is %d, should be %d",
-			n.path, n.maxParams, maxParams,
+			n.prefix, n.maxParams, maxParams,
 		)
 	}