Updated to use lazily loaded properties where possible.