Abstract usecase design TODO