adding lazy instantiation to speed things up