polishing a little bit. use MVar Field