bug, actually uses Data.List