creating generic module