btw we should have a type for Public instead of having it be null, verbose!