optimized and bug fixed