added device-specific initialization