clean code && new backend type