Trying another approach that is simpler, still a WIP