diff --git a/peyotls.cabal b/peyotls.cabal
--- a/peyotls.cabal
+++ b/peyotls.cabal
@@ -2,7 +2,7 @@
 cabal-version:	>= 1.8
 
 name:		peyotls
-version:	0.1.2.0
+version:	0.1.3.0
 stability:	Experimental
 author:		Yoshikuni Jujo <PAF01143@nifty.ne.jp>
 maintainer:	Yoshikuni Jujo <PAF01143@nifty.ne.jp>
@@ -281,7 +281,7 @@
 source-repository	this
     type:	git
     location:	git://github.com/YoshikuniJujo/peyotls.git
-    tag:	peyotls-0.1.2.0
+    tag:	peyotls-0.1.3.0
 
 library
     hs-source-dirs:	src
diff --git a/src/Network/PeyoTLS/Base.hs b/src/Network/PeyoTLS/Base.hs
--- a/src/Network/PeyoTLS/Base.hs
+++ b/src/Network/PeyoTLS/Base.hs
@@ -6,7 +6,7 @@
 	HandshakeM, execHandshakeM, rerunHandshakeM,
 		getSettingsC, setSettingsC, getSettingsS, setSettingsS,
 		withRandom, flushAd,
-		AlertLevel(..), AlertDesc(..), throw,
+		Alert(..), AlertLevel(..), AlertDesc(..), throw,
 		debugCipherSuite, debug,
 	ValidateHandle(..), handshakeValidate, validateAlert,
 	HandleBase, getNames,
@@ -82,7 +82,7 @@
 		RW(..), flushCipherSuite, makeKeys,
 		Side(..), handshakeHash, -- finishedHash,
 	ValidateHandle(..), handshakeValidate, validateAlert,
-	AlertLevel(..), AlertDesc(..), debugCipherSuite, throw )
+	Alert(..), AlertLevel(..), AlertDesc(..), debugCipherSuite, throw )
 import Network.PeyoTLS.Ecdsa (blSign, makeKs, ecdsaPubKey)
 
 modNm :: String
diff --git a/src/Network/PeyoTLS/Client.hs b/src/Network/PeyoTLS/Client.hs
--- a/src/Network/PeyoTLS/Client.hs
+++ b/src/Network/PeyoTLS/Client.hs
@@ -12,7 +12,7 @@
 
 module Network.PeyoTLS.Client (
 	-- * Basic
-	PeyotlsM, PeyotlsHandle, TlsM, TlsHandle,
+	PeyotlsM, PeyotlsHandle, TlsM, TlsHandle, Alert(..),
 	run, open, open', getNames, checkName,
 	-- * Renegotiation
 	renegotiate, setCipherSuites, setKeyCerts, setCertificateStore,
@@ -49,7 +49,7 @@
 		adGet, adGetLine, adGetContent, adPut, adDebug, adClose,
 	HandshakeM, execHandshakeM, rerunHandshakeM,
 		withRandom, flushAd,
-		AlertLevel(..), AlertDesc(..), throw,
+		Alert(..), AlertLevel(..), AlertDesc(..), throw,
 	ValidateHandle(..), handshakeValidate, validateAlert,
 	HandleBase, CertSecretKey(..),
 		readHandshake, writeHandshake, CCSpec(..),
diff --git a/src/Network/PeyoTLS/Run.hs b/src/Network/PeyoTLS/Run.hs
--- a/src/Network/PeyoTLS/Run.hs
+++ b/src/Network/PeyoTLS/Run.hs
@@ -14,7 +14,7 @@
 		H.RW(..), flushCipherSuite, makeKeys,
 		H.Side(..), handshakeHash, finishedHash,
 	H.ValidateHandle(..), handshakeValidate, validateAlert,
-	H.AlertLevel(..), H.AlertDesc(..), debugCipherSuite, throw ) where
+	H.Alert(..), H.AlertLevel(..), H.AlertDesc(..), debugCipherSuite, throw ) where
 
 import Control.Applicative ((<$>), (<*>))
 import Control.Arrow ((***))
diff --git a/src/Network/PeyoTLS/Run/Monad.hs b/src/Network/PeyoTLS/Run/Monad.hs
--- a/src/Network/PeyoTLS/Run/Monad.hs
+++ b/src/Network/PeyoTLS/Run/Monad.hs
@@ -58,7 +58,10 @@
 throw :: HandleLike h => AlertLevel -> AlertDesc -> String -> TlsM h g a
 throw = ((throwError .) .) . Alert
 
-data Alert = Alert AlertLevel AlertDesc String | NotDetected String deriving Show
+data Alert
+	= Alert AlertLevel AlertDesc String
+	| ExternalAlert String
+	| NotDetected String deriving Show
 
 data AlertLevel = ALWarning | ALFtl | ALRaw Word8 deriving Show
 
diff --git a/src/Network/PeyoTLS/Server.hs b/src/Network/PeyoTLS/Server.hs
--- a/src/Network/PeyoTLS/Server.hs
+++ b/src/Network/PeyoTLS/Server.hs
@@ -12,7 +12,7 @@
 
 module Network.PeyoTLS.Server (
 	-- * Basic
-	PeyotlsM, PeyotlsHandle, TlsM, TlsHandle, run, open, getNames,
+	PeyotlsM, PeyotlsHandle, TlsM, TlsHandle, Alert(..), run, open, getNames,
 	-- * Renegotiation
 	renegotiate, setCipherSuites, setKeyCerts, setCertificateStore,
 	-- * Cipher Suite
@@ -49,7 +49,7 @@
 		adGet, adGetLine, adGetContent, adPut, adDebug, adClose,
 	HandshakeM, execHandshakeM, rerunHandshakeM,
 		withRandom, flushAd,
-		AlertLevel(..), AlertDesc(..), throw, debugCipherSuite,
+		Alert(..), AlertLevel(..), AlertDesc(..), throw, debugCipherSuite,
 	ValidateHandle(..), handshakeValidate, validateAlert,
 	HandleBase, CertSecretKey(..), isRsaKey, isEcdsaKey,
 		readHandshake, writeHandshake, CCSpec(..),
