rebuild with future
some refactoring
some refactoring