Modified the API, updated the implementations, updated the example accordingly