updated with more generic modules