Implementation
nearly done with the implementation.