refactor, add introduction