use case 3 impl