code: func (s *Server) Register(id interface{}, f interface{}) {
  	switch f.(type) {
  	case func([]interface{}):
  	case func([]interface{}) interface{}:
  	case func([]interface{}) []interface{}:
  	default:
  		panic(fmt.Sprintf("function id %v: definition of function is invalid", id))
  	}
  
  	if _, ok := s.functions[id]; ok {
  		panic(fmt.Sprintf("function id %v: already registered", id))
  	}
  
  	s.functions[id] = f
  }
docs: // you must call the function before calling Open and Go