Design attempt 1 - incomplete