break API into parts for easier reading consumption