code improvements
new classes