Reorganize code
Add explain() function