neaten API structure