There is a lot of duplication throughout the codebase of this project. Which could likely be replaced by using configuration files (YAML?) and Go's built-in code generation.