logic and datatypes