added devicedetect