internal -> exposed