laid down core functionality