more idiomatic way doing temporal recurssion, and durations correctly implemented