Refactor budget to be implemented as a class instead of struct