#35 added concept for internal types and constraint for public internal types