read through the documentation