api fully test and documented