refactor bullet logics