started, it's broken
finished! much better object structure