/ 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,
    ...
)