Part-1 New implementation.