finishing the implementation