move lib to a independent project