solving problems