Code completed. still needs comments.