improved completion and str() representation