modularized further
modularized