refactored calculateBonus methods

Fixes #36