change param to self