core: take add action out of handler