Initial implementation
Due to test breakage. This reverts commit 43a4491043, reversing changes made to 5dcf1ab71a.
43a4491043
5dcf1ab71a