use boost lib