GC refactoring and cleanup