updated for improvement