use extend
clean things up; i think this fixes a bug with provides
wip