might want to also add `private` to the code so the docs make sense