basic functions now work