adding some meta programming and dynamically creating the device identifier methods