Fixed many small issues, warnings, changed names, using interface names instead of class names (if possible), final parameters/variables, etc.