@Override
    public Map<String, Object> serialize() {
        Map<String, Object> data = Maps.newHashMap();
        try {
            for (Field f : getClass().getDeclaredFields()) {
                data.put(f.getName(), f.get(this));
            }
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        }

        return data;
    }