Functional or object-oriented; don't really care which. Must be able to give detailed non-obstuse error messages.