works, roughly, but doesnt do a learning system on the error, or incorporate modifications to the final product