in theory this works