Add comment on IReduce
make Reduced final to optimise instance checks
refactor to use IReduce when building persistent vectors