https://github.com/ysm-dev/cpdown

이것도 비슷한방식으로 만들었어요.
코드 뜯어보세요 :)

여기도 참고하겠습니다 :)