Clean up base class

* Add instance method equivalents to singleton methods were relevant
* Do not use constant, define singleton methods dynamically instead
* Only use a constant for level-dependent bonuses
Add Klass specs