forked from: NeedleLines

@author okoi