refactoring after a brainstorming with @dadoonet