first pass at naive gen