refactor
bug fixing