refactor
fix bug