consolidated API + doc