complete except for numerical, gonna review it myself