improve basic structure