Code review

Don't merge, I'm using this as a code review branch.
This list should be unmidofiable. You don't want someone else changing the list while you're using it I'm guessing. So in the constructor use `ImmutableList.copyOf(fs)`.