refactor BlockFactory, refs #28