demand refactor