fully refactored methods out to seperate pre-definted methods