add callback methods, use require