add new views and optimize the some basic view func