A better way of doing callbacks (i.e. one that works)