Added _EXPERIMENTAL to include guards.
Removed stray ';'s.
Added better error checking.
Use make_unique - now bare news.