Huge changes

changed the whole thing