finished adding core functions, need to test