composer/satis clone