add more configuration
add error handling and protocol.go