Refactoring GA service to better abstract the various components