this is getting ridiculous
refactoring