New Implementation, but refactoring necessarry