implement C4_1 untested