finish initial version, need take care of sharepreference