Group PMs need not bloat the DB, especially with the "one way" feature. Just go with the "single object user store" (old Lotus terminology). Another table with multi-recipient PMs and in the user_PM table a pointer. If the user wants to "promote" the PM to the old model, the code would copy the PM over.