add require add refactor