Cleaned up, reduced codesize
Increased coverage, more thorough testing