To be honest, a big chunk of it is just handling user input and attempting to provide useful error messages.