improve baseviewcontroller