added socket timeout