Move Frame Generation into it's own class

This allows us to have another Service(not yet implemented) to handle the multiple generation task.
Tests that work on emulators.