switch to functional declerations