Completely refactored submission classes