Refactoring code to have a nicer structure
Pulling the interfaces up, Adding Budget test