should be using user-supplied dimension, rather than enforcing the dimension myself