another attempt at componenting