header only and improve test