Code refactoring: http://devdocs.magento.com/guides/v2.2/payments-integrations/base-integration/integration-intro.html