Re-factor the structure