Tensor network algorithms have been remarkably successful solving a variety of problems in quantum many-body physics. However, algorithms to optimize two-dimensional tensor networks known as PEPS lack many of the aspects that make the seminal density matrix renormalization group (DMRG) algorithm so powerful for optimizing one-dimensional tensor networks known as matrix product states. We implement a framework for optimizing two-dimensional PEPS tensor networks which includes all of steps that make DMRG so successful for optimizing one-dimension tensor networks. We present results for several 2D spin models and discuss possible extensions and applications.