do we really need here self_1 and self_2 ?