added getOS() function