as far as I can see this can be a `val`