improve and perfect