bfread((void *)&(d.elem()), sizeof(typename WordType<T>::Type_t), sizeof(T) / sizeof(typename WordType<T>::Type_t), bin.get());
for(int site=0; site < Layout::vol(); ++site) { int i = Layout::linearSiteIndex(site); bfread((void *)&(d.elem(i)), sizeof(typename WordType<T>::Type_t), sizeof(T) / sizeof(typename WordType<T>::Type_t), bin.get()); }
BinaryReader& read(BinaryReader& bin, OScalar<T>& d){  bfread((void *)&(d.elem()), sizeof(typename WordType<T>::Type_t), 	 sizeof(T) / sizeof(typename WordType<T>::Type_t), bin.get());   return bin;}