add require define
modular design