Gc -- rebased gc branch against master branch

I've rebased and did very minor testing on the gc branch. There are no functional changes at all.