use case implimentations