does this need to be public? probably should be final