Improve wrap api: add BaseWrapper