diff --git a/README.md b/README.md
index 8443db9..52e31d7 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,7 @@
 JOSE
 ============
 [![Build Status](https://travis-ci.org/SermoDigital/jose.svg?branch=master)](https://travis-ci.org/SermoDigital/jose)
+[![GoDoc](https://godoc.org/github.com/SermoDigital/jose?status.svg)](https://godoc.org/github.com/SermoDigital/jose)
 
 JOSE is a comprehensive set of JWT, JWS, and JWE libraries.
 
diff --git a/jwt/claims.go b/jwt/claims.go
index 2f4f2e1..cc135d8 100644
--- a/jwt/claims.go
+++ b/jwt/claims.go
@@ -118,7 +118,9 @@
 		return []string{t}, true
 	case []string:
 		return t, true
-	case interface{}, []interface{}:
+	case []interface{}:
+		return stringify(t...)
+	case interface{}:
 		return stringify(t)
 	}
 	return nil, false
diff --git a/jwt/claims_test.go b/jwt/claims_test.go
index e22cb07..c5edd70 100644
--- a/jwt/claims_test.go
+++ b/jwt/claims_test.go
@@ -1 +1,85 @@
-package jwt
+package jwt_test
+
+import (
+	"testing"
+
+	"github.com/SermoDigital/jose/crypto"
+	"github.com/SermoDigital/jose/jws"
+)
+
+func TestMultipleAudienceBug_AfterMarshal(t *testing.T) {
+
+	// Create JWS claims
+	claims := jws.Claims{}
+	claims.SetAudience("example.com", "api.example.com")
+
+	token := jws.NewJWT(claims, crypto.SigningMethodHS256)
+	serializedToken, _ := token.Serialize([]byte("abcdef"))
+
+	// Unmarshal JSON
+	newToken, _ := jws.ParseJWT(serializedToken)
+
+	c := newToken.Claims()
+
+	// Get Audience
+	aud, ok := c.Audience()
+	if !ok {
+
+		// Fails
+		t.Fail()
+	}
+
+	t.Logf("aud Value: %s", aud)
+	t.Logf("aud Type : %T", aud)
+}
+
+func TestMultipleAudienceFix_AfterMarshal(t *testing.T) {
+	// Create JWS claims
+	claims := jws.Claims{}
+	claims.SetAudience("example.com", "api.example.com")
+
+	token := jws.NewJWT(claims, crypto.SigningMethodHS256)
+	serializedToken, _ := token.Serialize([]byte("abcdef"))
+
+	// Unmarshal JSON
+	newToken, _ := jws.ParseJWT(serializedToken)
+
+	c := newToken.Claims()
+
+	// Get Audience
+	aud, ok := c.Audience()
+	if !ok {
+
+		// Fails
+		t.Fail()
+	}
+
+	t.Logf("aud len(): %d", len(aud))
+	t.Logf("aud Value: %s", aud)
+	t.Logf("aud Type : %T", aud)
+}
+
+func TestSingleAudienceFix_AfterMarshal(t *testing.T) {
+	// Create JWS claims
+	claims := jws.Claims{}
+	claims.SetAudience("example.com")
+
+	token := jws.NewJWT(claims, crypto.SigningMethodHS256)
+	serializedToken, _ := token.Serialize([]byte("abcdef"))
+
+	// Unmarshal JSON
+	newToken, _ := jws.ParseJWT(serializedToken)
+	c := newToken.Claims()
+
+	// Get Audience
+	aud, ok := c.Audience()
+	if !ok {
+
+		// Fails
+		t.Fail()
+	}
+
+	t.Logf("aud len(): %d", len(aud))
+	t.Logf("aud Value: %s", aud)
+	t.Logf("aud Type : %T", aud)
+}
