diff --git a/go.mod b/go.mod
index a485e7019be570c660389a6787df4fe46328c90b..9f96eafe8ccbbb6a6b79c11c5fe16f6abeae00ef 100644
--- a/go.mod
+++ b/go.mod
@@ -3,9 +3,9 @@ module github.com/neilpa/yajsv
 go 1.12
 
 require (
+	github.com/davecgh/go-spew v1.1.1 // indirect
+	github.com/ghodss/yaml v1.0.0
 	github.com/mitchellh/go-homedir v1.1.0
 	github.com/xeipuuv/gojsonschema v1.2.0
-	neilpa.me/go-x v0.1.0
-
-	sigs.k8s.io/yaml v1.2.0
+	gopkg.in/yaml.v2 v2.2.8 // indirect
 )
diff --git a/go.sum b/go.sum
index d4f242d6d17a794368ea92ae9acda5bf68cdbf3d..5b7e5c4e3306b08d0064a4012b2ba46eaae0fc83 100644
--- a/go.sum
+++ b/go.sum
@@ -2,6 +2,8 @@ github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8
 github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
 github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
 github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
+github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk=
+github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=
 github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y=
 github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0=
 github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
@@ -19,7 +21,3 @@ gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+
 gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
 gopkg.in/yaml.v2 v2.2.8 h1:obN1ZagJSUGI0Ek/LBmuj4SNLPfIny3KsKFopxRdj10=
 gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
-neilpa.me/go-x v0.1.0 h1:bry050ou4HtEhZ3vZEFRKrzqvObodseVvfcQvK/M8U4=
-neilpa.me/go-x v0.1.0/go.mod h1:aIemU+pQYLLV3dygXotHKF7SantXe5HzZR6VIjzY/4g=
-sigs.k8s.io/yaml v1.2.0 h1:kr/MCeFWJWTwyaHoR9c8EjH9OumOmoF9YGiZd7lFm/Q=
-sigs.k8s.io/yaml v1.2.0/go.mod h1:yfXDCHCao9+ENCvLSE62v9VSji2MKu5jeNfTrofGhJc=
diff --git a/main.go b/main.go
index e61ceddffc763524a1b52695baac36025e1cc7fe..ff18144381027da7ef5daf1a6c2e6eb62998e04b 100644
--- a/main.go
+++ b/main.go
@@ -4,7 +4,6 @@ package main
 
 import (
 	"bufio"
-	"bytes"
 	"flag"
 	"fmt"
 	"io/ioutil"
@@ -12,14 +11,13 @@ import (
 	"os"
 	"path/filepath"
 	"runtime"
+	"github.com/ghodss/yaml"
 	"strings"
 	"sync"
 
 	"github.com/mitchellh/go-homedir"
 	"github.com/xeipuuv/gojsonschema"
-	"sigs.k8s.io/yaml"
 
-	"neilpa.me/go-x/fileuri"
 )
 
 const (
@@ -86,47 +84,30 @@ func realMain(args []string) int {
 		return usageError("no JSON documents to validate")
 	}
 
-
 	// Compile target schema
 	sl := gojsonschema.NewSchemaLoader()
 	schemaUri := *schemaFlag
 	for _, ref := range refFlags {
 		for _, p := range glob(ref) {
-			uri := fileUri(p)
-			if uri == schemaUri {
+			if p == schemaUri {
 				continue
 			}
-			var loader gojsonschema.JSONLoader = nil
 
-			if strings.HasSuffix(uri, ".yaml") || strings.HasSuffix(uri, ".yml") {
-				valuesJSON, err := convertToJson(uri)
-				if err != nil {
-					log.Fatal("unable to parse YAML schema\n", err)
-				}
-				loader = gojsonschema.NewBytesLoader(valuesJSON)
-			} else {
-				loader = gojsonschema.NewReferenceLoader(uri)
-			}
-			err := sl.AddSchemas(loader)
+			loader, err := jsonLoader(p)
 			if err != nil {
+				log.Fatalf("%s: unable to load schema ref: %s\n", *schemaFlag, err)
+			}
+			addSchemaErr := sl.AddSchemas(loader)
+			if addSchemaErr != nil {
 				log.Fatalf("%s: invalid schema: %s\n", p, err)
 			}
 		}
 	}
 
-	var schemaLoader gojsonschema.JSONLoader = nil
-
-	if strings.HasSuffix(schemaUri, ".yaml") || strings.HasSuffix(schemaUri, ".yml") {
-		valuesJSON, err := convertToJson(schemaUri)
-		if err != nil {
-			log.Fatal("unable to parse YAML schema\n", err)
-		}
-		schemaLoader = gojsonschema.NewBytesLoader(valuesJSON)
-	} else {
-		schemaLoader = gojsonschema.NewReferenceLoader(schemaUri)
+	schemaLoader, err := jsonLoader(schemaUri)
+	if err != nil {
+		log.Fatalf("%s: unable to load schema: %s\n", *schemaFlag, err)
 	}
-
-	//schemaLoader := gojsonschema.NewReferenceLoader(schemaUri)
 	schema, err := sl.Compile(schemaLoader)
 	if err != nil {
 		log.Fatalf("%s: invalid schema: %s\n", *schemaFlag, err)
@@ -145,18 +126,11 @@ func realMain(args []string) int {
 			sem <- 0
 			defer func() { <-sem }()
 
-			var loader gojsonschema.JSONLoader = nil
 
-			if strings.HasSuffix(path, ".yaml") || strings.HasSuffix(path, ".yml") {
-				valuesJSON, err := convertToJson(path)
-				if err != nil {
-					log.Fatal("unable to parse YAML\n", err)
-				}
-				loader = gojsonschema.NewBytesLoader(valuesJSON)
-			} else {
-				loader = gojsonschema.NewReferenceLoader(fileUri(path))
+			loader, err := jsonLoader(path)
+			if err != nil {
+				log.Fatalf("%s: unable to load doc: %s\n", *schemaFlag, err)
 			}
-
 			result, err := schema.Validate(loader)
 			switch {
 			case err != nil:
@@ -201,44 +175,19 @@ func realMain(args []string) int {
 	return exit
 }
 
-func convertToJson(path string) ([]byte, error) {
-	values, err := ReadValuesFile(path)
-	if err != nil {
-		//return errors.Wrap(err, "unable to parse YAML")
-		return []byte{}, err
-	}
-	valuesData, err := yaml.Marshal(values)
-	if err != nil {
-		return []byte{}, err
-	}
-	valuesJSON, err := yaml.YAMLToJSON(valuesData)
+func jsonLoader(path string) (gojsonschema.JSONLoader, error) {
+	buf, err := ioutil.ReadFile(path)
 	if err != nil {
-		return []byte{}, err
-	}
-	if bytes.Equal(valuesJSON, []byte("null")) {
-		valuesJSON = []byte("{}")
+		return nil, err
 	}
-	return valuesJSON, err
-}
-
-type Values map[string]interface{}
-
-// ReadValues will parse YAML byte data into a Values.
-func ReadValues(data []byte) (vals Values, err error) {
-	err = yaml.Unmarshal(data, &vals)
-	if len(vals) == 0 {
-		vals = Values{}
+	switch filepath.Ext(path) {
+	case ".yml", ".yaml":
+		buf, err = yaml.YAMLToJSON(buf)
 	}
-	return vals, err
-}
-
-// ReadValuesFile will parse a YAML file into a map of values.
-func ReadValuesFile(filename string) (Values, error) {
-	data, err := ioutil.ReadFile(filename)
 	if err != nil {
-		return map[string]interface{}{}, err
+		return nil, err
 	}
-	return ReadValues(data)
+	return gojsonschema.NewBytesLoader(buf), nil
 }
 
 func printUsage() {
@@ -270,14 +219,6 @@ func usageError(msg string) int {
 	return 4
 }
 
-func fileUri(path string) string {
-	uri, err := fileuri.FromPath(path)
-	if err != nil {
-		log.Fatalf("%s: %s", path, err)
-	}
-	return uri
-}
-
 // glob is a wrapper that also resolves `~` since we may be skipping
 // the shell expansion when single-quoting globs at the command line
 func glob(pattern string) []string {