passed broken invoice specs
major refactoring per katrina's suggestions, then making tests pass