core functionality complete