Bunch of fixes

If you look at other functions here, they all accept handles directly (like `back::Program`). Is there a particular reason you changed this one?