redesigned api for minimal functionality