i'm not a fan of all the duplicate ? and : so i'll go with the functions instead