add tests and composer support