some cleanup; more tests for Submission; introducing withOpportunity