global refactoring + add privacy