Add comments on top of the files describing their roles
Add more detailed comments
Remove the key checking from New() and make it an exported function