modularized setup