improved combine method