refactor argument controllers