initial prototype of preferred API