added necessary require clauses