3 functions draft 1