Adding the implementation. Now it is bug fixing time.