three methods to do the same work