main usecase roughly finished