submit working code, still need clean up