this is temporarily becoming a behemoth, but that is fine - the goal is to first complete the bootstrap, and then add more features, which can then be used to decrease the size of the implementation.