Refractoring and code clean-up