This paper describes two focal issues: visual query optimization and concurrency control in designing OOIM, which is an object-oriented database management system being developed at KAIST. The basic principles for optimization are to build a framework on a formal algebraic basis and to operate directly with graph-based query specifications. The philosophy behind these principles is to utilize existing relational technology in supporting a graph-based object-oriented query language. For concurrency control, the principles of modeling method hierarchy as a nested transaction, exploiting semantics of methods, and dynamic determination of conflicts resulting from referential sharing are used. The basic idea is to enhance the degree of concurrency without allowing a non-serializable schedule.