implemented has transaction and soft get