refactor into many sub components, also implement an actual nav menu