implementing select all/none etc