implemented the initial version