assignment3 skeleton