diff --git a/.tags b/.tags
index 10d8498..bb68421 100644
--- a/.tags
+++ b/.tags
@@ -5,3 +5,4 @@
 !_TAG_PROGRAM_URL	http://ctags.sourceforge.net	/official site/
 !_TAG_PROGRAM_VERSION	5.8	//
 onChange	/home/eric/gopath/src/github.com/SermoDigital/jose/cover.html	/^		function onChange() {$/;"	f
+onChange	/home/eric/gopath/src/github.com/SermoDigital/jose/jws/cover.html	/^		function onChange() {$/;"	f
diff --git a/jwt/errors.go b/jwt/errors.go
index 9271d73..96b240d 100644
--- a/jwt/errors.go
+++ b/jwt/errors.go
@@ -10,4 +10,19 @@
 	// ErrTokenNotYetValid is return when time.Now().Unix() is before
 	// the token's "nbf" claim.
 	ErrTokenNotYetValid = errors.New("token is not yet valid")
+
+	// ErrInvalidISSClaim means the "iss" claim is invalid.
+	ErrInvalidISSClaim = errors.New("claim \"iss\" is invalid")
+
+	// ErrInvalidSUBClaim means the "sub" claim is invalid.
+	ErrInvalidSUBClaim = errors.New("claim \"sub\" is invalid")
+
+	// ErrInvalidIATClaim means the "iat" claim is invalid.
+	ErrInvalidIATClaim = errors.New("claim \"iat\" is invalid")
+
+	// ErrInvalidJTIClaim means the "jti" claim is invalid.
+	ErrInvalidJTIClaim = errors.New("claim \"jti\" is invalid")
+
+	// ErrInvalidAUDClaim means the "aud" claim is invalid.
+	ErrInvalidAUDClaim = errors.New("claim \"aud\" is invalid")
 )
diff --git a/jwt/jwt.go b/jwt/jwt.go
index 172e2f7..1c64ef7 100644
--- a/jwt/jwt.go
+++ b/jwt/jwt.go
@@ -1,7 +1,6 @@
 package jwt
 
 import (
-	"errors"
 	"fmt"
 
 	"github.com/SermoDigital/jose/crypto"
@@ -61,23 +60,23 @@
 	if iss, ok := v.Expected.Issuer(); ok &&
 		j.Claims().Get("iss") != iss {
 		fmt.Println(iss, j.Claims().Get("iss"))
-		return errors.New("TODO 1")
+		return ErrInvalidISSClaim
 	}
 	if sub, ok := v.Expected.Subject(); ok &&
 		j.Claims().Get("sub") != sub {
-		return errors.New("TODO 2")
+		return ErrInvalidSUBClaim
 	}
 	if iat, ok := v.Expected.IssuedAt(); ok &&
 		j.Claims().Get("iat") != iat {
-		return errors.New("TODO 3")
+		return ErrInvalidIATClaim
 	}
 	if jti, ok := v.Expected.JWTID(); ok &&
 		j.Claims().Get("jti") != jti {
-		return errors.New("TODO 4")
+		return ErrInvalidJTIClaim
 	}
 	if aud, ok := v.Expected.Audience(); ok &&
 		!eq(j.Claims().Get("aud"), aud) {
-		return errors.New("TODO 5")
+		return ErrInvalidAUDClaim
 	}
 
 	if v.Fn != nil {
