Add a comment about default argument value
Split implementation into multiple files
Transform multi-clause list traversal to case blocks
Code formatting tweaks
Fix typos