finished first pass of bonus API
wrapping bonus api in cleaner wrapper for actual use.