How to build modules that can be consumed selectively