better, faster, more accurate; closes #23