Change design and fix some bug