! some refactoring in blocks