add a complicated method