initial version
finished with [] operator