refactored gc1