refactoring: introduced base library and user data to allow for further refactorings