added more unit tests and marked most of the operations with either ReadOperation or MutatingOperation marker interfaces