Improvement code design
Design upgrade