added lazy loading
cleanup/refactoring