re-structuring everything