Learning to Solve Problems: A Handbook for Designing Problem-Solving Learning Environments