added piecewise_construct, random_device