working on the structure, code is really experimental for now