using minimongoid models to encapsulate behavior