no need to explicitly specify fields as transient since externalization
mechanism skips serializing them into stream anyways