Clean and added public dir

Use nested module/class definitions instead of compact style.<br>Missing top-level class documentation comment.<br>Use snake_case for source file names.