added an convex optimization pipeline