// based on basic block builder template