added ability to pipe in data and do timeouts