redo frame callbacks for better timing