Refractoring and add guava