code: func NewTxSubmitter(config *ClientConfig) (*TxSubmitter, error) {
  	err := ValidateClientConfig(config)
  	if err != nil {
  		return nil, err
  	}
  
  	// TODO: make mspType configurable
  	mspType := "bccsp"
  	peercommon.InitCrypto(config.MspDir, config.MspId, mspType)
  
  	Signer, err := mspmgmt.GetLocalMSP().GetDefaultSigningIdentity()
  	if err != nil {
  		return nil, err
  	}
  	creator, err := Signer.Serialize()
  	if err != nil {
  		return nil, err
  	}
  
  	ordererClient, err := NewOrdererClient(config)
  	if err != nil {
  		return nil, err
  	}
  
  	deliverClient, err := NewDeliverClient(config)
  	if err != nil {
  		return nil, err
  	}
  
  	return &TxSubmitter{
  		Config:        config,
  		Signer:        Signer,
  		Creator:       creator,
  		OrdererClient: ordererClient,
  		DeliverClient: deliverClient,
  	}, nil
  }
docs: // NewTransactionSubmitter creates a new TxSubmitter from token client config