basic module design