many changes :)