clean up the internals a bit with getters and setters, add filter