refactor punishments