During debugging I found that in a lot of the turtle code boost::optional instances are passed by value. This leads to a constructor and destructor call on each call making debugging a failure harder than it needs to be.
I'd suggest to accept those optionals by const& instead.