require functions implemented