I think its because we've done things backwards. Typically Metropolis is element-wise, then we have block updating as a special case. This makes me wonder if it would be worth combining the interfaces:

    step = Metropolis() # Single step
    step = Metropolis(block_update=True) # Block updating