make sure to use self when appropriate