Create a better lazy eval

building off of the lazy eval branch, this seems to be much faster without a loss of tactical strength