refactor some code + bug fix