added deletion use case, refactoring