add composer support, as self-contained lib