Improviing code architecture 2