changing signature + remove depend self