Solving problems with software