variable granularity