WIP: refactor the hell out of this lib. part2
WIP: refactor the hell out of this lib. part3
WIP: refactor the hell out of this lib. part4
WIP: stop if finished (customizable via options)
WIP: stop if finished (customizable via options), part2