New implementation working