requires active_resource more cleanly