Ripped out from a side project so it's more reusable