First pass at a generator