fixed fragment char handling
diff --git a/src/gojsonreference/reference.go b/src/gojsonreference/reference.go
index c8dea40..64a9604 100644
--- a/src/gojsonreference/reference.go
+++ b/src/gojsonreference/reference.go
@@ -18,6 +18,10 @@
 	"strings"
 )
 
+const (
+	FRAGMENT_CHAR = `#`
+)
+
 func NewJsonReference(jsonReferenceString string) (JsonReference, error) {
 
 	var r JsonReference
@@ -45,10 +49,15 @@
 }
 
 func (r *JsonReference) String() string {
+
 	if r.referenceUrl != nil {
 		return r.referenceUrl.String()
 	}
 
+	if r.HasFragmentOnly {
+		return FRAGMENT_CHAR + r.referencePointer.String()
+	}
+
 	return r.referencePointer.String()
 }
 
@@ -58,8 +67,8 @@
 	var err error
 
 	// fragment only
-	if strings.HasPrefix(jsonReferenceString, "#") {
-		r.referencePointer, err = gojsonpointer.NewJsonPointer(jsonReferenceString)
+	if strings.HasPrefix(jsonReferenceString, FRAGMENT_CHAR) {
+		r.referencePointer, err = gojsonpointer.NewJsonPointer(jsonReferenceString[1:])
 		if err != nil {
 			return nil
 		}
diff --git a/src/gojsonreference/reference_test.go b/src/gojsonreference/reference_test.go
index d2abbb6..24afd62 100644
--- a/src/gojsonreference/reference_test.go
+++ b/src/gojsonreference/reference_test.go
@@ -25,23 +25,23 @@
 	}
 
 	if in != r1.String() {
-		t.Errorf("Get(%v) = %v, expect %v", in, r1.String(), in)
+		t.Errorf("NewJsonReference(%v) = %v, expect %v", in, r1.String(), in)
 	}
 
 	if r1.HasFragmentOnly != false {
-		t.Errorf("Get(%v)::HasFragmentOnly %v expect %v", in, r1.HasFragmentOnly, false)
+		t.Errorf("NewJsonReference(%v)::HasFragmentOnly %v expect %v", in, r1.HasFragmentOnly, false)
 	}
 
 	if r1.HasFullUrl != true {
-		t.Errorf("Get(%v)::HasFullUrl %v expect %v", in, r1.HasFullUrl, true)
+		t.Errorf("NewJsonReference(%v)::HasFullUrl %v expect %v", in, r1.HasFullUrl, true)
 	}
 
 	if r1.HasUrlPathOnly != false {
-		t.Errorf("Get(%v)::HasUrlPathOnly %v expect %v", in, r1.HasUrlPathOnly, false)
+		t.Errorf("NewJsonReference(%v)::HasUrlPathOnly %v expect %v", in, r1.HasUrlPathOnly, false)
 	}
 
 	if r1.HasFileScheme != false {
-		t.Errorf("Get(%v)::HasFileScheme %v expect %v", in, r1.HasFileScheme, false)
+		t.Errorf("NewJsonReference(%v)::HasFileScheme %v expect %v", in, r1.HasFileScheme, false)
 	}
 }
 
@@ -55,23 +55,23 @@
 	}
 
 	if in != r1.String() {
-		t.Errorf("Get(%v) = %v, expect %v", in, r1.String(), in)
+		t.Errorf("NewJsonReference(%v) = %v, expect %v", in, r1.String(), in)
 	}
 
 	if r1.HasFragmentOnly != false {
-		t.Errorf("Get(%v)::HasFragmentOnly %v expect %v", in, r1.HasFragmentOnly, false)
+		t.Errorf("NewJsonReference(%v)::HasFragmentOnly %v expect %v", in, r1.HasFragmentOnly, false)
 	}
 
 	if r1.HasFullUrl != true {
-		t.Errorf("Get(%v)::HasFullUrl %v expect %v", in, r1.HasFullUrl, true)
+		t.Errorf("NewJsonReference(%v)::HasFullUrl %v expect %v", in, r1.HasFullUrl, true)
 	}
 
 	if r1.HasUrlPathOnly != false {
-		t.Errorf("Get(%v)::HasUrlPathOnly %v expect %v", in, r1.HasUrlPathOnly, false)
+		t.Errorf("NewJsonReference(%v)::HasUrlPathOnly %v expect %v", in, r1.HasUrlPathOnly, false)
 	}
 
 	if r1.HasFileScheme != false {
-		t.Errorf("Get(%v)::HasFileScheme %v expect %v", in, r1.HasFileScheme, false)
+		t.Errorf("NewJsonReference(%v)::HasFileScheme %v expect %v", in, r1.HasFileScheme, false)
 	}
 }
 
@@ -85,23 +85,23 @@
 	}
 
 	if in != r1.String() {
-		t.Errorf("Get(%v) = %v, expect %v", in, r1.String(), in)
+		t.Errorf("NewJsonReference(%v) = %v, expect %v", in, r1.String(), in)
 	}
 
 	if r1.HasFragmentOnly != true {
-		t.Errorf("Get(%v)::HasFragmentOnly %v expect %v", in, r1.HasFragmentOnly, true)
+		t.Errorf("NewJsonReference(%v)::HasFragmentOnly %v expect %v", in, r1.HasFragmentOnly, true)
 	}
 
 	if r1.HasFullUrl != false {
-		t.Errorf("Get(%v)::HasFullUrl %v expect %v", in, r1.HasFullUrl, false)
+		t.Errorf("NewJsonReference(%v)::HasFullUrl %v expect %v", in, r1.HasFullUrl, false)
 	}
 
 	if r1.HasUrlPathOnly != false {
-		t.Errorf("Get(%v)::HasUrlPathOnly %v expect %v", in, r1.HasUrlPathOnly, false)
+		t.Errorf("NewJsonReference(%v)::HasUrlPathOnly %v expect %v", in, r1.HasUrlPathOnly, false)
 	}
 
 	if r1.HasFileScheme != false {
-		t.Errorf("Get(%v)::HasFileScheme %v expect %v", in, r1.HasFileScheme, false)
+		t.Errorf("NewJsonReference(%v)::HasFileScheme %v expect %v", in, r1.HasFileScheme, false)
 	}
 }
 
@@ -115,22 +115,41 @@
 	}
 
 	if in != r1.String() {
-		t.Errorf("Get(%v) = %v, expect %v", in, r1.String(), in)
+		t.Errorf("NewJsonReference(%v) = %v, expect %v", in, r1.String(), in)
 	}
 
 	if r1.HasFragmentOnly != false {
-		t.Errorf("Get(%v)::HasFragmentOnly %v expect %v", in, r1.HasFragmentOnly, false)
+		t.Errorf("NewJsonReference(%v)::HasFragmentOnly %v expect %v", in, r1.HasFragmentOnly, false)
 	}
 
 	if r1.HasFullUrl != false {
-		t.Errorf("Get(%v)::HasFullUrl %v expect %v", in, r1.HasFullUrl, false)
+		t.Errorf("NewJsonReference(%v)::HasFullUrl %v expect %v", in, r1.HasFullUrl, false)
 	}
 
 	if r1.HasUrlPathOnly != true {
-		t.Errorf("Get(%v)::HasUrlPathOnly %v expect %v", in, r1.HasUrlPathOnly, true)
+		t.Errorf("NewJsonReference(%v)::HasUrlPathOnly %v expect %v", in, r1.HasUrlPathOnly, true)
 	}
 
 	if r1.HasFileScheme != false {
-		t.Errorf("Get(%v)::HasFileScheme %v expect %v", in, r1.HasFileScheme, false)
+		t.Errorf("NewJsonReference(%v)::HasFileScheme %v expect %v", in, r1.HasFileScheme, false)
+	}
+}
+
+func TestInheritsValid(t *testing.T) {
+
+	in1 := "http://www.test.com/doc.json"
+	in2 := "#/a/b"
+	out := in1 + in2
+
+	r1, _ := NewJsonReference(in1)
+	r2, _ := NewJsonReference(in2)
+
+	result, err := Inherits(r1, r2)
+	if err != nil {
+		t.Errorf("Inherits(%s,%s) error %s", r1.String(), r2.String(), err.Error())
+	}
+
+	if result.String() != out {
+		t.Errorf("Inherits(%s,%s) = %s, expect %s", r1.String(), r2.String(), result.String(), out)
 	}
 }