still needs work but pushing it