add documentation, move all optional parameters into options hashes