Default value of Key may not be NULL.
Added boost::optional support.
Merge branch 'boost' into next