diff --git a/errors.go b/errors.go
index <HASH>..<HASH> 100644
--- a/errors.go
+++ b/errors.go
@@ -1,12 +1,40 @@
 package plugins
 
-import (
-	"errors"
+type Error int
+
+func (e Error) Error() string {
+	if s, ok := errors[e]; ok {
+		return s
+	}
+
+	if e < 100 {
+		return "Unknown transmission error"
+	} else if e < 200 {
+		return "Unknown server error"
+	} else if e < 300 {
+		return "Unknown client error"
+	} else {
+		return "Unknown error"
+	}
+}
+
+var errors = map[Error]string{
+	Success:           "No error. Everything is fine.",
+	NoSupportedFormat: "No supported formats in common",
+	Unblocking:        "This is a unblocking recieve",
+	NotImplemented:    "Operation is not implemented",
+	NotDirectory:      "Path supplied is not a directory",
+}
+
+//Transmission errors
+const (
+	Success Error = iota
+	NoSupportedFormat
 )
 
-var (
-	NoSupportedFormat = errors.New("No supported formats in common")
-	Unblocking        = errors.New("This is a unblocking recieve")
-	NotImplemented    = errors.New("Operation is not implemented")
-	NotDirectory      = errors.New("Path supplied is not a directory")
+//Server errors
+const (
+	Unblocking Error = 100 + iota
+	NotImplemented
+	NotDirectory
 )
Remade how errors is represented in preparation for sending them over the wire.