create the higher level API