- added builder interface instead of custom singleton