Don't add the class/object names to properties
A simple solution is better than a complex one.
Every module, class or function in a computer program should have responsibility over a single part of that program's functionality, and it should encapsulate that part
Methods and classes should explicitly require any collaborating objects they need in order to function correctly
high level modules should not depend on low level modules; both should depend on abstractions.
Write code to respond to external events, such as from an existing framework