merge 0.3.x branch with amazing changes