modularized, passing