add new interfaces and add new functional