some refactoring: split backends, meta class moved to models