Refactored roll method to make it simpler.