renamed all namespaces and classes to avoid naming conflict