grant (correct) implementation

TODO: switch to a grant/ongrant implementa