/ app.go
/ Register the AppModule for the fee middleware module
ModuleBasics = module.NewBasicManager(
  ...
  ibcfee.AppModuleBasic{
},
  ...
)
...
/ Add module account permissions for the fee middleware module
maccPerms = map[string][]string{
  ...
  ibcfeetypes.ModuleName:            nil,
}
...
/ Add fee middleware Keeper
type App struct {
  ...
  IBCFeeKeeper ibcfeekeeper.Keeper
  ...
}
...
/ Create store keys
    keys := sdk.NewKVStoreKeys(
  ...
  ibcfeetypes.StoreKey,
  ...
)
...
app.IBCFeeKeeper = ibcfeekeeper.NewKeeper(
  appCodec, keys[ibcfeetypes.StoreKey],
  app.IBCKeeper.ChannelKeeper, / may be replaced with IBC middleware
  app.IBCKeeper.ChannelKeeper,
  &app.IBCKeeper.PortKeeper, app.AccountKeeper, app.BankKeeper,
)
/ See the section below for configuring an application stack with the fee middleware module
...
/ Register fee middleware AppModule
app.moduleManager = module.NewManager(
  ...
  ibcfee.NewAppModule(app.IBCFeeKeeper),
)
...
/ Add fee middleware to begin blocker logic
app.moduleManager.SetOrderBeginBlockers(
  ...
  ibcfeetypes.ModuleName,
  ...
)
/ Add fee middleware to end blocker logic
app.moduleManager.SetOrderEndBlockers(
  ...
  ibcfeetypes.ModuleName,
  ...
)
/ Add fee middleware to init genesis logic
app.moduleManager.SetOrderInitGenesis(
  ...
  ibcfeetypes.ModuleName,
  ...
)