Evaluation stage

This completes evaluation stage, although the helpers functions could still use some tests.