Rework API. Fix #4