recursive blueprint