refactoring
fix #455