replaced the withDescription method with a more general purpose with method