Add timeout, callback, test case