compile time dimension check added
list elimination