@Override
	public void messageReceived(ChannelHandlerContext ctx, MessageEvent e) throws Exception {
		if(e.getMessage() instanceof HandshakeResponseEvent) {
			if(listener != null) {
				listener.handshakeResponseReceived((HandshakeResponseEvent) e.getMessage());
			}
			if(((HandshakeResponseEvent) e.getMessage()).getStatus() == HandshakeStatus.SUCCESSFUL) {
				NetworkEvent event = Events.createNewEvent(ClientContext.clientChannel);
				event.setMessage(new UpdateHeaderEvent(UpdateHeaderEvent.WELCOME_MSG_READY));
				event.send();
				
				ArrayList<ChannelHandler> handlers = ClientContext.createMessagePipeline();
				
				for(int i = 0; i < handlers.size(); i++) {
					ctx.getPipeline().addLast("handler-" + i, handlers.get(i));
					
				}
				
				ctx.getPipeline().remove(this);
			}
		}
		super.messageReceived(ctx, e);
	}