strong, attack, weak types implemented