Moved the interface and implementation to library folder