final algo