added core functionality and constructs