* pass duration, its not otherwise available
* working implementation, but SLOOW