Full rewrite of puller