Use member variables where possible, do not call methods, because toString() might result in change of state.  Also we should avoid throwing exceptions in toString()