refactor promote block