move ga implementation to another package