forked from: rainbow2

