Add apigen and update source documentation