@jameshalsall This should be re-useable