add frame callback