finished draft of likely API