implement basic APIs