refactor
fix interface