needs seriously a refactor on the bonus things too