modified class names for a better understanding