v2 without globals