two-sided op, unoptimized