extracted product directives into its own module