conditionals and multiple blocks -- need arbitrary blocks