I don't understand the difference between core and feature modules in angular 2. As far as I understand there are three recommended types of modules: core, feature and shared.
If a module exports some declarations (components, directives and pipes) and many modules will import this module, then this module should be a shared module (in shared directory).
If a module expors some declarations (components, directives and pipes) and only the root module will import this module, then this module should be a core module (in core directory).
Are feature modules the same? Only root module imports them. In this example there is a CoreModule and a feature module called ContactModule. I don't see the difference between them. Both of them are imported in root module.