I don't have a problem with GHCO. Miss the ACH transfers of IB. One thing I have a beef about is the PATS API. One of the most frustrating and difficult processes I have ever programmed for. Several things I'd mention:
1) Lack of good testing server. You have to buy time on their servers to test your app. You get up to a month. Most of that time is taken up with arguing with the techs over problems one encounters.
2) Different behavior across exchanges. It would be nice if the same procedures could be followed across each exchange, e.g. order statuses, fill reports, cancellations, etc.
3) Upgrades. Seems to be no quality control with software releases. I just upgraded a point release (comes out every few months). I send an order to Eurex, and it is rejected as invalid order. Even the header files had to be modified heavily to get it to compile.
Overall, though, I give kudos to low margins of PATS brokers, customer service, and once you're app is working, speed and stability seem quite good.