simplify, plus more careful with parameters