Fully implemented lecture 3 - with the exception of flash-light