remade from scratch
Made more changes