using hard exit