cleaned up, still a little too explicit