implementation for parent