major refactor to make this lib more modern, following layoutmanager conventions.
fixed dependencies