implemention require()