Basic functionality works, but needs cleaning up