make file objects immutable and build equality/hash methods.
add collection accessor and default initializer