refactor SchematicBlock, close #1949