-- Updated, please see README for some changes.