virtual TBASE& at(size_t x, size_t y)
 {
     return static_cast<TBASE &>(storage->at(x, y));
 }
 virtual TBASE& at(Index idx)
 {
     return static_cast<TBASE &>(storage->at(idx));
 }
 virtual const TBASE& at(size_t x, size_t y) const
 {
     return static_cast<const TBASE &>(storage->at(x, y));
 }
 virtual const TBASE& at(Index idx) const
 {
     return static_cast<const TBASE &>(storage->at(idx));
 }