where does the business logic go?