rough concept working, needs much cleanup!