The way this calls table creation is not what was originally envisioned. If an individual agent passes its this pointer to this function, an individual table (or other backend collection) is made for that agent. We have yet to find a use case for this type of behavior, though I don't deny there won't be one in the future.

My initial suggestion for clarity and ease of use is to swap these arguments and have Model* creator default to NULL. This would simplify the interface (e.g. EM->newEvent("Enrichments")-> ...).