Work on self seems to work now. More testing can be done