Added all the functionlity and tests to satisfy this feature