relaxed implementation