some cosmetic changes and added return self's..