an abstraction library for templating librarires