I worry that making these all properties will give the wrong signal to callers: these are expensive operations.