basic business logic, using ServiceLoader