updated sphere generation