moved modules into a nested Internal namespace to indicate they aren't for public consumption