Strict types

Strict typesStrict typesStrict typesStrict typesStrict typesStrict typesStrict typesStrict typesStrict typesStrict typesStrict typesStrict typesStrict typesStrict typesStrict typesStrict typesStrict typesStrict typesStrict typesStrict typesStrict typesStrict typesStrict typesStrict typesStrict typesStrict typesStrict typesStrict typesStrict typesStrict typesStrict typesStrict typesStrict typesStrict typesStrict typesStrict typesStrict typesStrict typesStrict typesStrict typesStrict typesStrict typesStrict typesStrict typesStrict typesStrict typesStrict typesStrict types