perhaps a better approach