refactor: remove unnecessary libraries linked
refactor: cleanup build flags
refactor: move gui elements to gui library
refactor: split pheripherals to separate library