add compute functions