@jameshalsall This should be shared functionality