code: func (plugin *ExamplePlugin) Init() error {
  	// Read public key
  	publicKey, err := readPublicKey("../cryptodata-lib/key-pub.pem")
  	if err != nil {
  		return err
  	}
  
  	// Create ETCD connection
  	plugin.db, err = plugin.newEtcdConnection("etcd.conf")
  	if err != nil {
  		return err
  	}
  
  	// Prepare data
  	data, err := plugin.encryptData("hello-world", publicKey)
  	if err != nil {
  		return err
  	}
  	encryptedJSON := fmt.Sprintf(JSONData, data)
  	plugin.Log.Infof("Putting value %v", encryptedJSON)
  
  	// Prepare path for storing the data
  	key := plugin.etcdKey("value")
  
  	// Put JSON data to ETCD
  	err = plugin.db.Put(key, []byte(encryptedJSON))
  	if err != nil {
  		return err
  	}
  
  	// WrapBytes ETCD connection with crypto layer
  	dbWrapped := plugin.CryptoData.WrapBytes(plugin.db, cryptodata.NewDecrypterJSON())
  	broker := dbWrapped.NewBroker(keyval.Root)
  
  	// Get JSON data from ETCD and decrypt them with crypto layer
  	decryptedJSON, _, _, err := broker.GetValue(key)
  	if err != nil {
  		return err
  	}
  	plugin.Log.Infof("Got value %v", string(decryptedJSON))
  
  	// Close agent and example
  	close(plugin.exampleFinished)
  
  	return nil
  }
docs: // Init starts the consumer.