* refactor request