implement avstract method