new perspective algorithm