Add type parameters to fix unchecked compiler warnings where possible, otherwise add SuppressWarnings("unchecked") compiler directive in a couple places. Use ReflectUtils.newInstance for creating new instances of objects from class names.