some improuvements