major changes :)