moved eigen_init / eigen_free in initialize / finalize to diagonalize.