Refactored internals making everything cleaner

Hope consumers are using the API >:)

Also added perl_pumpkins() function