replaced all static UI elements with a factory instead of confusing class hierarchy