First refactoring off of the initial implementation to make use of hexagonal principles.