reuse some codes.