more some refactor