almost, need prev check
working iterator X_X