froked from google code vh-class-util