Changed the overall behaviour and design a bit