use explict self. when appropriate