again some code refactored