* split lifespan and middleware logic in separate mixin files * fix for 3.8 * fix for unit tests * add missing sys import --------- Co-authored-by: Masen Furer <m_github@0x26.net>