renamed self -> this