add: base poll function