Separate out the business logic from the stuff that depends on it