modules (closes #48)