new duration implementation