refactoring, adding more tests, making sure getting extra reward, and logging is correct