Add more documentation on implementation