fix TestPara

unexport ValueType*
diff --git a/expr.go b/expr.go
index f778901..d9fdb40 100644
--- a/expr.go
+++ b/expr.go
@@ -75,7 +75,7 @@
 	return SerializableVar{Type: "literal", V: string(s)}
 }
 func (s literal) Dump(w io.Writer) {
-	dumpByte(w, ValueTypeLiteral)
+	dumpByte(w, valueTypeLiteral)
 	dumpBytes(w, []byte(s))
 }
 
@@ -91,7 +91,7 @@
 	return SerializableVar{Type: "tmpval", V: string(t)}
 }
 func (t tmpval) Dump(w io.Writer) {
-	dumpByte(w, ValueTypeTmpval)
+	dumpByte(w, valueTypeTmpval)
 	dumpBytes(w, t)
 }
 
@@ -120,7 +120,7 @@
 	return r
 }
 func (e Expr) Dump(w io.Writer) {
-	dumpByte(w, ValueTypeExpr)
+	dumpByte(w, valueTypeExpr)
 	dumpInt(w, len(e))
 	for _, v := range e {
 		v.Dump(w)
@@ -165,7 +165,7 @@
 	}
 }
 func (v *varref) Dump(w io.Writer) {
-	dumpByte(w, ValueTypeVarref)
+	dumpByte(w, valueTypeVarref)
 	v.varname.Dump(w)
 }
 
@@ -193,7 +193,7 @@
 }
 
 func (p paramref) Dump(w io.Writer) {
-	dumpByte(w, ValueTypeParamref)
+	dumpByte(w, valueTypeParamref)
 	dumpInt(w, int(p))
 }
 
@@ -243,7 +243,7 @@
 }
 
 func (v varsubst) Dump(w io.Writer) {
-	dumpByte(w, ValueTypeVarsubst)
+	dumpByte(w, valueTypeVarsubst)
 	v.varname.Dump(w)
 	v.pat.Dump(w)
 	v.subst.Dump(w)
diff --git a/func.go b/func.go
index b9f3fd9..84be00d 100644
--- a/func.go
+++ b/func.go
@@ -147,7 +147,7 @@
 }
 
 func (c *fclosure) Dump(w io.Writer) {
-	dumpByte(w, ValueTypeFunc)
+	dumpByte(w, valueTypeFunc)
 	for _, a := range c.args {
 		a.Dump(w)
 	}
@@ -972,7 +972,7 @@
 	}
 }
 func (f *funcNop) Dump(w io.Writer) {
-	dumpByte(w, ValueTypeNop)
+	dumpByte(w, valueTypeNop)
 }
 
 func parseAssignLiteral(s string) (lhs, op string, rhs Value, ok bool) {
@@ -1058,7 +1058,7 @@
 }
 
 func (f *funcEvalAssign) Dump(w io.Writer) {
-	dumpByte(w, ValueTypeAssign)
+	dumpByte(w, valueTypeAssign)
 	dumpString(w, f.lhs)
 	dumpString(w, f.op)
 	f.rhs.Dump(w)
diff --git a/para_test.go b/para_test.go
index 26f2669..bb39eb9 100644
--- a/para_test.go
+++ b/para_test.go
@@ -25,11 +25,11 @@
 	if err != nil {
 		panic(err)
 	}
-	ParaPath = filepath.Join(cwd, "para")
-	JobsFlag = 4
+	paraPath := filepath.Join(cwd, "para")
+	numJobs := 4
 
 	paraChan := make(chan *ParaResult)
-	para := NewParaWorker(paraChan)
+	para := newParaWorker(paraChan, numJobs, paraPath)
 	go para.Run()
 
 	numTasks := 100
diff --git a/serialize.go b/serialize.go
index 2b8c45c..7f26456 100644
--- a/serialize.go
+++ b/serialize.go
@@ -31,19 +31,19 @@
 )
 
 const (
-	ValueTypeRecursive = 'R'
-	ValueTypeSimple    = 'S'
-	ValueTypeTSV       = 'T'
-	ValueTypeUndefined = 'U'
-	ValueTypeAssign    = 'a'
-	ValueTypeExpr      = 'e'
-	ValueTypeFunc      = 'f'
-	ValueTypeLiteral   = 'l'
-	ValueTypeNop       = 'n'
-	ValueTypeParamref  = 'p'
-	ValueTypeVarref    = 'r'
-	ValueTypeVarsubst  = 's'
-	ValueTypeTmpval    = 't'
+	valueTypeRecursive = 'R'
+	valueTypeSimple    = 'S'
+	valueTypeTSV       = 'T'
+	valueTypeUndefined = 'U'
+	valueTypeAssign    = 'a'
+	valueTypeExpr      = 'e'
+	valueTypeFunc      = 'f'
+	valueTypeLiteral   = 'l'
+	valueTypeNop       = 'n'
+	valueTypeParamref  = 'p'
+	valueTypeVarref    = 'r'
+	valueTypeVarsubst  = 's'
+	valueTypeTmpval    = 't'
 )
 
 func dumpInt(w io.Writer, i int) {
diff --git a/var.go b/var.go
index 568316d..a28ae12 100644
--- a/var.go
+++ b/var.go
@@ -73,7 +73,7 @@
 }
 
 func (v *TargetSpecificVar) Dump(w io.Writer) {
-	dumpByte(w, ValueTypeTSV)
+	dumpByte(w, valueTypeTSV)
 	dumpString(w, v.op)
 	v.v.Dump(w)
 }
@@ -99,7 +99,7 @@
 	}
 }
 func (v *SimpleVar) Dump(w io.Writer) {
-	dumpByte(w, ValueTypeSimple)
+	dumpByte(w, valueTypeSimple)
 	dumpString(w, v.value)
 	dumpString(w, v.origin)
 }
@@ -188,7 +188,7 @@
 	}
 }
 func (v *RecursiveVar) Dump(w io.Writer) {
-	dumpByte(w, ValueTypeRecursive)
+	dumpByte(w, valueTypeRecursive)
 	v.expr.Dump(w)
 	dumpString(w, v.origin)
 }
@@ -238,7 +238,7 @@
 	return SerializableVar{Type: "undefined"}
 }
 func (UndefinedVar) Dump(w io.Writer) {
-	dumpByte(w, ValueTypeUndefined)
+	dumpByte(w, valueTypeUndefined)
 }
 
 func (UndefinedVar) Append(*Evaluator, string) Var {