Factor out roll into its own method.