do proper checking