some improevments