Work in progress
Now the design needs cleanup