better eval somewhat done
4/5 on final eval function