Well, there's quite a few things that need improvement. You need a place to accept an address, and then another place to accept a task to carry out on that address. This can be done using a few decoders and MUXs (multiplexer).
That one is probably similar to what you would want, but II'm sure you could make it smaller. From what I've seen, yours is just the memory without the automatic in/output.