basic structure inital version