Messy implementations for me;)