some thoughs about API