#34 Replaced hardcoded id types with ID objects
#30 Moved ID definition of components to their constructors so the user didn’t have to define them