Add descriptions and some optimize