runable, some refactoring