Fully completed assignment! (sans Javadoc comments)