new & imp algo