make the sizes configurable rather than a magic number, and add a test