Add the majority of API functionality