added device detection library