Refactor to extract public API into it's own module so bean definitions don't need to pull in all the implementation.