forked from: Mosaic

@author hiko