added variational; code done; code runs; too slow; not converge