first version, ui and abstract library