task #3 improovement