seperate out block selection logic