more advanced generator