modified usecases and refactored packages a bit