re-arrange, and setup basic structure