Initial commit with most functionality