modified algo