1. A method of analyzing blocks of time comprising: assigning a block of time a time interval wherein the time interval comprises a start time and an end time; assigning the block of time a type wherein the type is metadata that describes parameters of the block of time; executing a traversal method that reviews each block of time; and executing an aggregation method that performs operations on the blocks of time wherein the aggregation method operates on the time interval and on the type.