add selection, abstract tools