updated business logic