Solutions to programing challenges