reformat api, add utils, add connect/reserve func