merge my improvements/fixes from the experimental branch