added lazy loading option