Tried modularize a little more ... perhaps too much?