Working and fast, but I'd like to try generators