Added version check functionality

This commit can potentially break many of the components. I need to
double check every single component tomorrow afternoon.
In cases like this I think we should have a development branch!