fix. it still need refactoring