Use setters and switch fields to private.
Resolve a bunch of TODOs.
Adding @Override annotations
Added missing @Deprecated annotations
Bunch of minor warning fixes