DONE(MOSTLY)