cleaned up ExpressionScan and added tests