some high level definitions