improve based on comments