switched to using shift register