Done except some minor changes