benefits of using self type annotations over inheritance

i'll add it to gitignore