add programming doc