Woo, where to start. You may very well be a trail blazer with the MMFI DLL ... or else everyone's just keeping quiet about it.
You must always remember that when you access a special member variable like xLeft, you are actually invoking a fairly pricey (relatively speaking) C function with various metaindexing overhead. You should cache the value in a local value if you plan on using repeatedly per frame. Though I'm not sure why class invocations would be faster.
Are you moving an object between testing overlap? For some reason, if you update an object's coordinates, it will not be reflected in the overlap functions until the next frame. A bit annoying, but easily worked around by leveraging the offset parameters of the overlaps functions. If that's not your problem though, it could be a bug, possibly a bug that I've corrected but not released a build for yet. An example would be great.
Are you asking about adding say .. different active objects to a combined class? As opposed to totally different object types which groups also don't allow (they split themselves up). Maybe in the future I can add support for groups but I'm not sure how much will need to be changed. It may be fairly straightforward.
Please, send me an example for each of the specific problems you encountered (and if you can, try to pair it down to a simple test case if you can .. e.g. a frame swarming with objects for performance problems). I'll take a look at it, though admittedly I may not be able to get to it until next week due work and travel.