add default implementation