finish implementation, next step is test