fixed #5, #6, #7