added caching & text is aligned to center