qp (still not finished)