some refactored