smarter schemas, registered recursively