finish first implementation, going to test phase