improve describe function