Modified design desicions a bit.