fully functional

minimal error checking