Abstracting Distributed, Time-Sensitive Applications