Ok, I did a bit more reading of TDPL and decided to go with the following pattern: synchronized class A{ private string[] _values; void setValue(size_t i, string val) {_values[i] = val;} string getValue(size_t i) const {return _values[i];} } Works fine, my problem solved :) Again, D makes it so easy! Thanks, Stewart