Current design (minus error handling, which depends on #11) 
Current design (minus error handling, which depends on #11)