this seems like a better approach