removed benchmark stuff, streamlined + simplified impl
callback, tmp bench