TODO that we can remove our use of reflection