refactor(working stable)