Basic framework in place, expand upon this later