 import Unbox
 import Wrap
 
-public enum Event: RawRepresentable, Hashable {
-	public enum StoneEvent: String {
+public func == (lhs: Event, rhs: Event) -> Bool {
+	return lhs.rawValue == rhs.rawValue
+}
+
+public func == (lhs: Event, rhs: Event.PhoenixEvent) -> Bool {
+	return lhs.rawValue == rhs.rawValue
+}
+
+public func != (lhs: Event, rhs: Event.PhoenixEvent) -> Bool {
+	return !(lhs == rhs)
+}
+
+public enum Event: RawRepresentable, Hashable, Equatable {
+	public enum PhoenixEvent: String {
 		case Join		= "phx_join"
 		case Reply		= "phx_reply"
 		case Leave		= "phx_leave"

		case Heartbeat	= "heartbeat"
	}

	case Default(StoneEvent)
	case Custom(String)

	public var rawValue: String {

	}

	public init?(rawValue: String) {
		if let def = PhoenixEvent(rawValue: rawValue) {
			self = .Default(def)
		} else {
			self = .Custom(rawValue)
