refactored gc2