improved budget item test coverage and refactoring