fixed #14,#15,#16