improved performance and no attribute return