reduce memory footprint and introduce a request queue