re-do base model. save this commit for revert purpose