reimplement extend...