business logic layer