kinda works with async restriction
save a working version; cleaned up somewhat; save before sleep 07-16