implementing hardware software row