Refactor the direct() with/without args pattern