further modularizing stuff