allow Set function to set a value even if no value previously existed
diff --git a/pointer.go b/pointer.go
index 386bcec..7faf5d7 100644
--- a/pointer.go
+++ b/pointer.go
@@ -133,6 +133,8 @@
 				} else if isLastToken && i.mode =="DEL" {
 					delete(v,decodedToken)
 				}
+			} else if (isLastToken && i.mode == "SET") {
+				v[decodedToken] = i.setInValue
 			} else {
 				i.outError = fmt.Errorf("Object has no key '%s'", decodedToken)
 				i.getOutKind = reflect.Map
diff --git a/pointer_test.go b/pointer_test.go
index ce5b47e..612f76e 100644
--- a/pointer_test.go
+++ b/pointer_test.go
@@ -246,6 +246,32 @@
 
 }
 
+func TestSetEmptyNode(t *testing.T) {
+
+	jsonText := `{}`
+
+	var jsonDocument interface{}
+	json.Unmarshal([]byte(jsonText), &jsonDocument)
+
+	in := "/a"
+
+	p, err := NewJsonPointer(in)
+	if err != nil {
+		t.Errorf("NewJsonPointer(%v) error %v", in, err.Error())
+	}
+
+	_, err = p.Set(jsonDocument, 999)
+	if err != nil {
+		t.Errorf("Set(%v) error %v", in, err.Error())
+	}
+
+	firstNode := jsonDocument.(map[string]interface{})
+	target := firstNode["a"].(int)
+	if target != 999 {
+		t.Errorf("Set(%s) failed", in)
+	}
+}
+
 func TestDelObject(t *testing.T) {
 	jsonText := `{
 		"a":["apple sauce", "ketchup", "soy sauce"],