some codes to use later