It's a mess. 1700 lines, and each new chain integration conflict. Create a common interface for chains and split adopters into separate modules.