Never heard of Crowd so I can't "judge" the package, here are some general remarks nonetheless:
* I would not make the 3 class variables private, it makes sub-classing difficult, "protected" seems better to me;
* I think some repeated parts of the code (especially in the 3 last methods) could be put in common (using a protected method or using the __call() magic method...).
Looks good and well documented and tested otherwise.