abstract extension