I suspect you are running into a problem from using Global variables. Your “background” is a global. If your start.lua scene also has a variable called background that is global, when you purge your start scene with: storyboard.purgeScene(“start”) it will remove everything in start scene. If start scene has a global named background, it gets removed and later when you try to leave this scene, it can’t find background to remove it.
Globals are evil and you shouldn’t use them unless you absolutely have to.
People use globals as a way to get around dealing with scope. We have a tutorial that tries to explain scope and how to properly code your app so that you can use local variables instead of globals. https://coronalabs.com/blog/2015/06/16/tutorial-scope-for-beginners/
In your case, at the very top you have this line:
-- background
change that to:
local background
That will properly scope your background variable in your module so it can be used inside different functions and not run into problems with globals.
Since I can’t see start.lua, I’m only guessing that this the problem because that’s the only reason I can see why background wouldn’t be a display object at that point in your code.