finished Apress tutorial