added moar refactor, naming etc.