#5 Added constructor fixed
#6 Optimizations