Refactor to support args