http://www.slideshare.net/Ovid/refactoring-with-roles-1298185