fully functional. Could expose methods, property better.