Essentials of problem-based learning