Initial design

Test by running multiple matrices through, ensure proper caching.
last minute comment changes

This has been tested, it appears to work properly. Ready to submit.