use O2 instead
fixed data connections, removed unnecessary checks, and simplified pad events