some improovements