Lets move this to a TPL.