DPLL Implementation