major api changes (should be stable now)