diff --git a/packages/binary/marshalutil/generic_parser.go b/packages/binary/marshalutil/generic_parser.go
deleted file mode 100644
index e8a7409c0fdd2fd6bc3b41d2387413a3f9c6a23c..0000000000000000000000000000000000000000
--- a/packages/binary/marshalutil/generic_parser.go
+++ /dev/null
@@ -1,3 +0,0 @@
-package marshalutil
-
-type GenericParser func(data []byte) (result interface{}, err error, consumedBytes int)
diff --git a/packages/binary/marshalutil/marshalutil.go b/packages/binary/marshalutil/marshalutil.go
index 45ab8ad2ce81d77dbc4910fe6fe74b83cd878dec..3e96aeffdd3052887f970d1c19180f3bc7c20b6e 100644
--- a/packages/binary/marshalutil/marshalutil.go
+++ b/packages/binary/marshalutil/marshalutil.go
@@ -38,10 +38,11 @@ func New(args ...interface{}) *MarshalUtil {
 	}
 }
 
-func (util *MarshalUtil) Parse(parser GenericParser) (result interface{}, err error) {
+func (util *MarshalUtil) Parse(parser func(data []byte) (result interface{}, err error, consumedBytes int)) (result interface{}, err error) {
 	result, err, readBytes := parser(util.bytes[util.readOffset:])
-
-	util.ReadSeek(util.readOffset + readBytes)
+	if err != nil {
+		util.ReadSeek(util.readOffset + readBytes)
+	}
 
 	return
 }