separate previousViewController into its own method, hide previous upon push animation complete to avoid overlapped background views