implemented lazy loading (issue #30)