rename and add flexable width caculate