common abstract variant