forked from: snow

