WIP: changing a whole load of things - think I do need separate Element and Value protocols