random access, some thread safety, a builder, better attribute handling