using spring and still cleaning up some guard nonsense