Added many many changes I havent updated recently