add utility struct for executing an action at dispose
rename Clock.System to Clock.Default and use Stopwatch.GetTimestamp() as a source for time