refactor assign return