A big Refactor to better usability