Additional documentation, argument checking
Add more argument checks