implement async oj
a better way for async oj