implement SUB (tested)